137 // Heap oop accesses. These accessors get resolved when
138 // IN_HEAP is set (e.g. when using the HeapAccess API), it is
139 // an oop_* overload, and the barrier strength is AS_NORMAL.
140 template <typename T>
141 static oop oop_load_in_heap(T* addr);
142 static oop oop_load_in_heap_at(oop base, ptrdiff_t offset);
143
144 template <typename T>
145 static void oop_store_in_heap(T* addr, oop value);
146 static void oop_store_in_heap_at(oop base, ptrdiff_t offset, oop value);
147
148 template <typename T>
149 static oop oop_atomic_cmpxchg_in_heap(T* addr, oop compare_value, oop new_value);
150 static oop oop_atomic_cmpxchg_in_heap_at(oop base, ptrdiff_t offset, oop compare_value, oop new_value);
151
152 template <typename T>
153 static oop oop_atomic_xchg_in_heap(T* addr, oop new_value);
154 static oop oop_atomic_xchg_in_heap_at(oop base, ptrdiff_t offset, oop new_value);
155
156 template <typename T>
157 static bool oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw,
158 arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw,
159 size_t length);
160
161 // Clone barrier support
162 static void clone_in_heap(oop src, oop dst, size_t size);
163
164 // Support for concurrent roots evacuation, updating and weak roots clearing
165 template <typename T>
166 static oop oop_load_not_in_heap(T* addr);
167
168 // Support for concurrent roots marking
169 template <typename T>
170 static void oop_store_not_in_heap(T* addr, oop value);
171
172 template <typename T>
173 static oop oop_atomic_cmpxchg_not_in_heap(T* addr, oop compare_value, oop new_value);
174
175 template <typename T>
176 static oop oop_atomic_xchg_not_in_heap(T* addr, oop new_value);
177
|
137 // Heap oop accesses. These accessors get resolved when
138 // IN_HEAP is set (e.g. when using the HeapAccess API), it is
139 // an oop_* overload, and the barrier strength is AS_NORMAL.
140 template <typename T>
141 static oop oop_load_in_heap(T* addr);
142 static oop oop_load_in_heap_at(oop base, ptrdiff_t offset);
143
144 template <typename T>
145 static void oop_store_in_heap(T* addr, oop value);
146 static void oop_store_in_heap_at(oop base, ptrdiff_t offset, oop value);
147
148 template <typename T>
149 static oop oop_atomic_cmpxchg_in_heap(T* addr, oop compare_value, oop new_value);
150 static oop oop_atomic_cmpxchg_in_heap_at(oop base, ptrdiff_t offset, oop compare_value, oop new_value);
151
152 template <typename T>
153 static oop oop_atomic_xchg_in_heap(T* addr, oop new_value);
154 static oop oop_atomic_xchg_in_heap_at(oop base, ptrdiff_t offset, oop new_value);
155
156 template <typename T>
157 static void oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw,
158 arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw,
159 size_t length);
160
161 // Clone barrier support
162 static void clone_in_heap(oop src, oop dst, size_t size);
163
164 // Support for concurrent roots evacuation, updating and weak roots clearing
165 template <typename T>
166 static oop oop_load_not_in_heap(T* addr);
167
168 // Support for concurrent roots marking
169 template <typename T>
170 static void oop_store_not_in_heap(T* addr, oop value);
171
172 template <typename T>
173 static oop oop_atomic_cmpxchg_not_in_heap(T* addr, oop compare_value, oop new_value);
174
175 template <typename T>
176 static oop oop_atomic_xchg_not_in_heap(T* addr, oop new_value);
177
|