258 static oop oop_atomic_cmpxchg_in_heap(oop new_value, T* addr, oop compare_value) {
259 return Raw::oop_atomic_cmpxchg(new_value, addr, compare_value);
260 }
261
262 static oop oop_atomic_cmpxchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset, oop compare_value) {
263 return Raw::oop_atomic_cmpxchg_at(new_value, base, offset, compare_value);
264 }
265
266 template <typename T>
267 static oop oop_atomic_xchg_in_heap(oop new_value, T* addr) {
268 return Raw::oop_atomic_xchg(new_value, addr);
269 }
270
271 static oop oop_atomic_xchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset) {
272 return Raw::oop_atomic_xchg_at(new_value, base, offset);
273 }
274
275 template <typename T>
276 static bool oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw,
277 arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw,
278 size_t length) {
279 return Raw::oop_arraycopy(src_obj, src_offset_in_bytes, src_raw,
280 dst_obj, dst_offset_in_bytes, dst_raw,
281 length);
282 }
283
284 // Off-heap oop accesses. These accessors get resolved when
285 // IN_HEAP is not set (e.g. when using the NativeAccess API), it is
286 // an oop* overload, and the barrier strength is AS_NORMAL.
287 template <typename T>
288 static oop oop_load_not_in_heap(T* addr) {
289 return Raw::template oop_load<oop>(addr);
290 }
291
292 template <typename T>
293 static void oop_store_not_in_heap(T* addr, oop value) {
294 Raw::oop_store(addr, value);
295 }
296
297 template <typename T>
298 static oop oop_atomic_cmpxchg_not_in_heap(oop new_value, T* addr, oop compare_value) {
299 return Raw::oop_atomic_cmpxchg(new_value, addr, compare_value);
300 }
301
302 template <typename T>
|
258 static oop oop_atomic_cmpxchg_in_heap(oop new_value, T* addr, oop compare_value) {
259 return Raw::oop_atomic_cmpxchg(new_value, addr, compare_value);
260 }
261
262 static oop oop_atomic_cmpxchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset, oop compare_value) {
263 return Raw::oop_atomic_cmpxchg_at(new_value, base, offset, compare_value);
264 }
265
266 template <typename T>
267 static oop oop_atomic_xchg_in_heap(oop new_value, T* addr) {
268 return Raw::oop_atomic_xchg(new_value, addr);
269 }
270
271 static oop oop_atomic_xchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset) {
272 return Raw::oop_atomic_xchg_at(new_value, base, offset);
273 }
274
275 template <typename T>
276 static bool oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw,
277 arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw,
278 size_t length);
279
280 // Off-heap oop accesses. These accessors get resolved when
281 // IN_HEAP is not set (e.g. when using the NativeAccess API), it is
282 // an oop* overload, and the barrier strength is AS_NORMAL.
283 template <typename T>
284 static oop oop_load_not_in_heap(T* addr) {
285 return Raw::template oop_load<oop>(addr);
286 }
287
288 template <typename T>
289 static void oop_store_not_in_heap(T* addr, oop value) {
290 Raw::oop_store(addr, value);
291 }
292
293 template <typename T>
294 static oop oop_atomic_cmpxchg_not_in_heap(oop new_value, T* addr, oop compare_value) {
295 return Raw::oop_atomic_cmpxchg(new_value, addr, compare_value);
296 }
297
298 template <typename T>
|