< prev index next >

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

Print this page
rev 49217 : 8198445: Access API for primitive/native arraycopy
Reviewed-by: pliden, eosterlund, dholmes


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




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


< prev index next >