61 template <typename T>
62 static oop load_barrier_on_unknown_oop_field_preloaded(oop base, ptrdiff_t offset, T* addr, oop o);
63
64 public:
65 //
66 // In heap
67 //
68 template <typename T>
69 static oop oop_load_in_heap(T* addr);
70 static oop oop_load_in_heap_at(oop base, ptrdiff_t offset);
71
72 template <typename T>
73 static oop oop_atomic_cmpxchg_in_heap(T* addr, oop compare_value, oop new_value);
74 static oop oop_atomic_cmpxchg_in_heap_at(oop base, ptrdiff_t offset, oop compare_value, oop new_value);
75
76 template <typename T>
77 static oop oop_atomic_xchg_in_heap(T* addr, oop new_value);
78 static oop oop_atomic_xchg_in_heap_at(oop base, ptrdiff_t offset, oop new_value);
79
80 template <typename T>
81 static bool oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw,
82 arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw,
83 size_t length);
84
85 static void clone_in_heap(oop src, oop dst, size_t size);
86
87 //
88 // Not in heap
89 //
90 template <typename T>
91 static oop oop_load_not_in_heap(T* addr);
92
93 template <typename T>
94 static oop oop_atomic_cmpxchg_not_in_heap(T* addr, oop compare_value, oop new_value);
95
96 template <typename T>
97 static oop oop_atomic_xchg_not_in_heap(T* addr, oop new_value);
98 };
99 };
100
101 template<> struct BarrierSet::GetName<XBarrierSet> {
102 static const BarrierSet::Name value = BarrierSet::XBarrierSet;
103 };
104
105 template<> struct BarrierSet::GetType<BarrierSet::XBarrierSet> {
106 typedef ::XBarrierSet type;
|
61 template <typename T>
62 static oop load_barrier_on_unknown_oop_field_preloaded(oop base, ptrdiff_t offset, T* addr, oop o);
63
64 public:
65 //
66 // In heap
67 //
68 template <typename T>
69 static oop oop_load_in_heap(T* addr);
70 static oop oop_load_in_heap_at(oop base, ptrdiff_t offset);
71
72 template <typename T>
73 static oop oop_atomic_cmpxchg_in_heap(T* addr, oop compare_value, oop new_value);
74 static oop oop_atomic_cmpxchg_in_heap_at(oop base, ptrdiff_t offset, oop compare_value, oop new_value);
75
76 template <typename T>
77 static oop oop_atomic_xchg_in_heap(T* addr, oop new_value);
78 static oop oop_atomic_xchg_in_heap_at(oop base, ptrdiff_t offset, oop new_value);
79
80 template <typename T>
81 static void oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw,
82 arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw,
83 size_t length);
84
85 static void clone_in_heap(oop src, oop dst, size_t size);
86
87 static void value_copy_in_heap(void* src, void* dst, InlineKlass* md, LayoutKind lk);
88
89 //
90 // Not in heap
91 //
92 template <typename T>
93 static oop oop_load_not_in_heap(T* addr);
94
95 template <typename T>
96 static oop oop_atomic_cmpxchg_not_in_heap(T* addr, oop compare_value, oop new_value);
97
98 template <typename T>
99 static oop oop_atomic_xchg_not_in_heap(T* addr, oop new_value);
100 };
101 };
102
103 template<> struct BarrierSet::GetName<XBarrierSet> {
104 static const BarrierSet::Name value = BarrierSet::XBarrierSet;
105 };
106
107 template<> struct BarrierSet::GetType<BarrierSet::XBarrierSet> {
108 typedef ::XBarrierSet type;
|