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(oop new_value, T* addr, oop compare_value);
74 static oop oop_atomic_cmpxchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset, oop compare_value);
75
76 template <typename T>
77 static oop oop_atomic_xchg_in_heap(oop new_value, T* addr);
78 static oop oop_atomic_xchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset);
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(oop new_value, T* addr, oop compare_value);
95
96 template <typename T>
97 static oop oop_atomic_xchg_not_in_heap(oop new_value, T* addr);
98 };
99 };
100
101 template<> struct BarrierSet::GetName<ZBarrierSet> {
|
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(oop new_value, T* addr, oop compare_value);
74 static oop oop_atomic_cmpxchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset, oop compare_value);
75
76 template <typename T>
77 static oop oop_atomic_xchg_in_heap(oop new_value, T* addr);
78 static oop oop_atomic_xchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset);
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 //
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(oop new_value, T* addr, oop compare_value);
95
96 template <typename T>
97 static oop oop_atomic_xchg_not_in_heap(oop new_value, T* addr);
98 };
99 };
100
101 template<> struct BarrierSet::GetName<ZBarrierSet> {
|