< prev index next >

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

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


 166     static T atomic_cmpxchg_in_heap(T new_value, T* addr, T compare_value) {
 167       return Raw::atomic_cmpxchg(new_value, addr, compare_value);
 168     }
 169 
 170     template <typename T>
 171     static T atomic_cmpxchg_in_heap_at(T new_value, oop base, ptrdiff_t offset, T compare_value) {
 172       return Raw::oop_atomic_cmpxchg_at(new_value, base, offset, compare_value);
 173     }
 174 
 175     template <typename T>
 176     static T atomic_xchg_in_heap(T new_value, T* addr) {
 177       return Raw::atomic_xchg(new_value, addr);
 178     }
 179 
 180     template <typename T>
 181     static T atomic_xchg_in_heap_at(T new_value, oop base, ptrdiff_t offset) {
 182       return Raw::atomic_xchg_at(new_value, base, offset);
 183     }
 184 
 185     template <typename T>
 186     static void arraycopy_in_heap(arrayOop src_obj, arrayOop dst_obj, T* src, T* dst, size_t length) {
 187       Raw::arraycopy(src_obj, dst_obj, src, dst, length);
 188     }
 189 
 190     // Heap oop accesses. These accessors get resolved when
 191     // IN_HEAP is set (e.g. when using the HeapAccess API), it is
 192     // an oop_* overload, and the barrier strength is AS_NORMAL.
 193     template <typename T>
 194     static oop oop_load_in_heap(T* addr) {
 195       return Raw::template oop_load<oop>(addr);
 196     }
 197 
 198     static oop oop_load_in_heap_at(oop base, ptrdiff_t offset) {
 199       return Raw::template oop_load_at<oop>(base, offset);
 200     }
 201 
 202     template <typename T>
 203     static void oop_store_in_heap(T* addr, oop value) {
 204       Raw::oop_store(addr, value);
 205     }
 206 
 207     static void oop_store_in_heap_at(oop base, ptrdiff_t offset, oop value) {


 210 
 211     template <typename T>
 212     static oop oop_atomic_cmpxchg_in_heap(oop new_value, T* addr, oop compare_value) {
 213       return Raw::oop_atomic_cmpxchg(new_value, addr, compare_value);
 214     }
 215 
 216     static oop oop_atomic_cmpxchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset, oop compare_value) {
 217       return Raw::oop_atomic_cmpxchg_at(new_value, base, offset, compare_value);
 218     }
 219 
 220     template <typename T>
 221     static oop oop_atomic_xchg_in_heap(oop new_value, T* addr) {
 222       return Raw::oop_atomic_xchg(new_value, addr);
 223     }
 224 
 225     static oop oop_atomic_xchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset) {
 226       return Raw::oop_atomic_xchg_at(new_value, base, offset);
 227     }
 228 
 229     template <typename T>
 230     static bool oop_arraycopy_in_heap(arrayOop src_obj, arrayOop dst_obj, T* src, T* dst, size_t length) {
 231       return Raw::oop_arraycopy(src_obj, dst_obj, src, dst, length);
 232     }
 233 
 234     // Off-heap oop accesses. These accessors get resolved when
 235     // IN_HEAP is not set (e.g. when using the RootAccess API), it is
 236     // an oop* overload, and the barrier strength is AS_NORMAL.
 237     template <typename T>
 238     static oop oop_load_not_in_heap(T* addr) {
 239       return Raw::template oop_load<oop>(addr);
 240     }
 241 
 242     template <typename T>
 243     static void oop_store_not_in_heap(T* addr, oop value) {
 244       Raw::oop_store(addr, value);
 245     }
 246 
 247     template <typename T>
 248     static oop oop_atomic_cmpxchg_not_in_heap(oop new_value, T* addr, oop compare_value) {
 249       return Raw::oop_atomic_cmpxchg(new_value, addr, compare_value);
 250     }
 251 




 166     static T atomic_cmpxchg_in_heap(T new_value, T* addr, T compare_value) {
 167       return Raw::atomic_cmpxchg(new_value, addr, compare_value);
 168     }
 169 
 170     template <typename T>
 171     static T atomic_cmpxchg_in_heap_at(T new_value, oop base, ptrdiff_t offset, T compare_value) {
 172       return Raw::oop_atomic_cmpxchg_at(new_value, base, offset, compare_value);
 173     }
 174 
 175     template <typename T>
 176     static T atomic_xchg_in_heap(T new_value, T* addr) {
 177       return Raw::atomic_xchg(new_value, addr);
 178     }
 179 
 180     template <typename T>
 181     static T atomic_xchg_in_heap_at(T new_value, oop base, ptrdiff_t offset) {
 182       return Raw::atomic_xchg_at(new_value, base, offset);
 183     }
 184 
 185     template <typename T>
 186     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) {
 187       Raw::arraycopy(src_obj, src_offset_in_bytes, src_raw, dst_obj, dst_offset_in_bytes, dst_raw, length);
 188     }
 189 
 190     // Heap oop accesses. These accessors get resolved when
 191     // IN_HEAP is set (e.g. when using the HeapAccess API), it is
 192     // an oop_* overload, and the barrier strength is AS_NORMAL.
 193     template <typename T>
 194     static oop oop_load_in_heap(T* addr) {
 195       return Raw::template oop_load<oop>(addr);
 196     }
 197 
 198     static oop oop_load_in_heap_at(oop base, ptrdiff_t offset) {
 199       return Raw::template oop_load_at<oop>(base, offset);
 200     }
 201 
 202     template <typename T>
 203     static void oop_store_in_heap(T* addr, oop value) {
 204       Raw::oop_store(addr, value);
 205     }
 206 
 207     static void oop_store_in_heap_at(oop base, ptrdiff_t offset, oop value) {


 210 
 211     template <typename T>
 212     static oop oop_atomic_cmpxchg_in_heap(oop new_value, T* addr, oop compare_value) {
 213       return Raw::oop_atomic_cmpxchg(new_value, addr, compare_value);
 214     }
 215 
 216     static oop oop_atomic_cmpxchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset, oop compare_value) {
 217       return Raw::oop_atomic_cmpxchg_at(new_value, base, offset, compare_value);
 218     }
 219 
 220     template <typename T>
 221     static oop oop_atomic_xchg_in_heap(oop new_value, T* addr) {
 222       return Raw::oop_atomic_xchg(new_value, addr);
 223     }
 224 
 225     static oop oop_atomic_xchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset) {
 226       return Raw::oop_atomic_xchg_at(new_value, base, offset);
 227     }
 228 
 229     template <typename T>
 230     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) {
 231       return Raw::oop_arraycopy(src_obj, src_offset_in_bytes, src_raw, dst_obj, dst_offset_in_bytes, dst_raw, length);
 232     }
 233 
 234     // Off-heap oop accesses. These accessors get resolved when
 235     // IN_HEAP is not set (e.g. when using the RootAccess API), it is
 236     // an oop* overload, and the barrier strength is AS_NORMAL.
 237     template <typename T>
 238     static oop oop_load_not_in_heap(T* addr) {
 239       return Raw::template oop_load<oop>(addr);
 240     }
 241 
 242     template <typename T>
 243     static void oop_store_not_in_heap(T* addr, oop value) {
 244       Raw::oop_store(addr, value);
 245     }
 246 
 247     template <typename T>
 248     static oop oop_atomic_cmpxchg_not_in_heap(oop new_value, T* addr, oop compare_value) {
 249       return Raw::oop_atomic_cmpxchg(new_value, addr, compare_value);
 250     }
 251 


< prev index next >