< prev index next >

src/hotspot/share/gc/shared/barrierSet.hpp

Print this page
rev 50331 : 8198285: More consistent Access API for arraycopy


 196     static T atomic_cmpxchg_in_heap(T new_value, T* addr, T compare_value) {
 197       return Raw::atomic_cmpxchg(new_value, addr, compare_value);
 198     }
 199 
 200     template <typename T>
 201     static T atomic_cmpxchg_in_heap_at(T new_value, oop base, ptrdiff_t offset, T compare_value) {
 202       return Raw::oop_atomic_cmpxchg_at(new_value, base, offset, compare_value);
 203     }
 204 
 205     template <typename T>
 206     static T atomic_xchg_in_heap(T new_value, T* addr) {
 207       return Raw::atomic_xchg(new_value, addr);
 208     }
 209 
 210     template <typename T>
 211     static T atomic_xchg_in_heap_at(T new_value, oop base, ptrdiff_t offset) {
 212       return Raw::atomic_xchg_at(new_value, base, offset);
 213     }
 214 
 215     template <typename T>
 216     static void arraycopy_in_heap(arrayOop src_obj, arrayOop dst_obj, T* src, T* dst, size_t length) {
 217       Raw::arraycopy(src_obj, dst_obj, src, dst, length);
 218     }
 219 
 220     // Heap oop accesses. These accessors get resolved when
 221     // IN_HEAP is set (e.g. when using the HeapAccess API), it is
 222     // an oop_* overload, and the barrier strength is AS_NORMAL.
 223     template <typename T>
 224     static oop oop_load_in_heap(T* addr) {
 225       return Raw::template oop_load<oop>(addr);
 226     }
 227 
 228     static oop oop_load_in_heap_at(oop base, ptrdiff_t offset) {
 229       return Raw::template oop_load_at<oop>(base, offset);
 230     }
 231 
 232     template <typename T>
 233     static void oop_store_in_heap(T* addr, oop value) {
 234       Raw::oop_store(addr, value);
 235     }
 236 
 237     static void oop_store_in_heap_at(oop base, ptrdiff_t offset, oop value) {


 240 
 241     template <typename T>
 242     static oop oop_atomic_cmpxchg_in_heap(oop new_value, T* addr, oop compare_value) {
 243       return Raw::oop_atomic_cmpxchg(new_value, addr, compare_value);
 244     }
 245 
 246     static oop oop_atomic_cmpxchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset, oop compare_value) {
 247       return Raw::oop_atomic_cmpxchg_at(new_value, base, offset, compare_value);
 248     }
 249 
 250     template <typename T>
 251     static oop oop_atomic_xchg_in_heap(oop new_value, T* addr) {
 252       return Raw::oop_atomic_xchg(new_value, addr);
 253     }
 254 
 255     static oop oop_atomic_xchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset) {
 256       return Raw::oop_atomic_xchg_at(new_value, base, offset);
 257     }
 258 
 259     template <typename T>
 260     static bool oop_arraycopy_in_heap(arrayOop src_obj, arrayOop dst_obj, T* src, T* dst, size_t length) {
 261       return Raw::oop_arraycopy(src_obj, dst_obj, src, dst, length);
 262     }
 263 
 264     // Off-heap oop accesses. These accessors get resolved when
 265     // IN_HEAP is not set (e.g. when using the RootAccess API), it is
 266     // an oop* overload, and the barrier strength is AS_NORMAL.
 267     template <typename T>
 268     static oop oop_load_not_in_heap(T* addr) {
 269       return Raw::template oop_load<oop>(addr);
 270     }
 271 
 272     template <typename T>
 273     static void oop_store_not_in_heap(T* addr, oop value) {
 274       Raw::oop_store(addr, value);
 275     }
 276 
 277     template <typename T>
 278     static oop oop_atomic_cmpxchg_not_in_heap(oop new_value, T* addr, oop compare_value) {
 279       return Raw::oop_atomic_cmpxchg(new_value, addr, compare_value);
 280     }
 281 




 196     static T atomic_cmpxchg_in_heap(T new_value, T* addr, T compare_value) {
 197       return Raw::atomic_cmpxchg(new_value, addr, compare_value);
 198     }
 199 
 200     template <typename T>
 201     static T atomic_cmpxchg_in_heap_at(T new_value, oop base, ptrdiff_t offset, T compare_value) {
 202       return Raw::oop_atomic_cmpxchg_at(new_value, base, offset, compare_value);
 203     }
 204 
 205     template <typename T>
 206     static T atomic_xchg_in_heap(T new_value, T* addr) {
 207       return Raw::atomic_xchg(new_value, addr);
 208     }
 209 
 210     template <typename T>
 211     static T atomic_xchg_in_heap_at(T new_value, oop base, ptrdiff_t offset) {
 212       return Raw::atomic_xchg_at(new_value, base, offset);
 213     }
 214 
 215     template <typename T>
 216     static void arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, const T* src_raw, arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw, size_t length) {
 217       Raw::arraycopy(src_obj, src_offset_in_bytes, src_raw, dst_obj, dst_offset_in_bytes, dst_raw, length);
 218     }
 219 
 220     // Heap oop accesses. These accessors get resolved when
 221     // IN_HEAP is set (e.g. when using the HeapAccess API), it is
 222     // an oop_* overload, and the barrier strength is AS_NORMAL.
 223     template <typename T>
 224     static oop oop_load_in_heap(T* addr) {
 225       return Raw::template oop_load<oop>(addr);
 226     }
 227 
 228     static oop oop_load_in_heap_at(oop base, ptrdiff_t offset) {
 229       return Raw::template oop_load_at<oop>(base, offset);
 230     }
 231 
 232     template <typename T>
 233     static void oop_store_in_heap(T* addr, oop value) {
 234       Raw::oop_store(addr, value);
 235     }
 236 
 237     static void oop_store_in_heap_at(oop base, ptrdiff_t offset, oop value) {


 240 
 241     template <typename T>
 242     static oop oop_atomic_cmpxchg_in_heap(oop new_value, T* addr, oop compare_value) {
 243       return Raw::oop_atomic_cmpxchg(new_value, addr, compare_value);
 244     }
 245 
 246     static oop oop_atomic_cmpxchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset, oop compare_value) {
 247       return Raw::oop_atomic_cmpxchg_at(new_value, base, offset, compare_value);
 248     }
 249 
 250     template <typename T>
 251     static oop oop_atomic_xchg_in_heap(oop new_value, T* addr) {
 252       return Raw::oop_atomic_xchg(new_value, addr);
 253     }
 254 
 255     static oop oop_atomic_xchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset) {
 256       return Raw::oop_atomic_xchg_at(new_value, base, offset);
 257     }
 258 
 259     template <typename T>
 260     static bool oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, const T* src_raw, arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw, size_t length) {
 261       return Raw::oop_arraycopy(src_obj, src_offset_in_bytes, src_raw, dst_obj, dst_offset_in_bytes, dst_raw, length);
 262     }
 263 
 264     // Off-heap oop accesses. These accessors get resolved when
 265     // IN_HEAP is not set (e.g. when using the RootAccess API), it is
 266     // an oop* overload, and the barrier strength is AS_NORMAL.
 267     template <typename T>
 268     static oop oop_load_not_in_heap(T* addr) {
 269       return Raw::template oop_load<oop>(addr);
 270     }
 271 
 272     template <typename T>
 273     static void oop_store_not_in_heap(T* addr, oop value) {
 274       Raw::oop_store(addr, value);
 275     }
 276 
 277     template <typename T>
 278     static oop oop_atomic_cmpxchg_not_in_heap(oop new_value, T* addr, oop compare_value) {
 279       return Raw::oop_atomic_cmpxchg(new_value, addr, compare_value);
 280     }
 281 


< prev index next >