318 static inline void store(void* addr, T value) {
319 store_internal<decorators>(addr, value);
320 }
321
322 template <typename T>
323 static inline T load(void* addr) {
324 return load_internal<decorators, T>(addr);
325 }
326
327 template <typename T>
328 static inline T atomic_cmpxchg(T new_value, void* addr, T compare_value) {
329 return atomic_cmpxchg_maybe_locked<decorators>(new_value, addr, compare_value);
330 }
331
332 template <typename T>
333 static inline T atomic_xchg(T new_value, void* addr) {
334 return atomic_xchg_maybe_locked<decorators>(new_value, addr);
335 }
336
337 template <typename T>
338 static bool arraycopy(T* src, T* dst, size_t length);
339
340 template <typename T>
341 static void oop_store(void* addr, T value);
342 template <typename T>
343 static void oop_store_at(oop base, ptrdiff_t offset, T value);
344
345 template <typename T>
346 static T oop_load(void* addr);
347 template <typename T>
348 static T oop_load_at(oop base, ptrdiff_t offset);
349
350 template <typename T>
351 static T oop_atomic_cmpxchg(T new_value, void* addr, T compare_value);
352 template <typename T>
353 static T oop_atomic_cmpxchg_at(T new_value, oop base, ptrdiff_t offset, T compare_value);
354
355 template <typename T>
356 static T oop_atomic_xchg(T new_value, void* addr);
357 template <typename T>
358 static T oop_atomic_xchg_at(T new_value, oop base, ptrdiff_t offset);
|
318 static inline void store(void* addr, T value) {
319 store_internal<decorators>(addr, value);
320 }
321
322 template <typename T>
323 static inline T load(void* addr) {
324 return load_internal<decorators, T>(addr);
325 }
326
327 template <typename T>
328 static inline T atomic_cmpxchg(T new_value, void* addr, T compare_value) {
329 return atomic_cmpxchg_maybe_locked<decorators>(new_value, addr, compare_value);
330 }
331
332 template <typename T>
333 static inline T atomic_xchg(T new_value, void* addr) {
334 return atomic_xchg_maybe_locked<decorators>(new_value, addr);
335 }
336
337 template <typename T>
338 static bool arraycopy(arrayOop s, arrayOop d, T* src, T* dst, size_t length);
339
340 template <typename T>
341 static void oop_store(void* addr, T value);
342 template <typename T>
343 static void oop_store_at(oop base, ptrdiff_t offset, T value);
344
345 template <typename T>
346 static T oop_load(void* addr);
347 template <typename T>
348 static T oop_load_at(oop base, ptrdiff_t offset);
349
350 template <typename T>
351 static T oop_atomic_cmpxchg(T new_value, void* addr, T compare_value);
352 template <typename T>
353 static T oop_atomic_cmpxchg_at(T new_value, oop base, ptrdiff_t offset, T compare_value);
354
355 template <typename T>
356 static T oop_atomic_xchg(T new_value, void* addr);
357 template <typename T>
358 static T oop_atomic_xchg_at(T new_value, oop base, ptrdiff_t offset);
|