295
296 template <typename T>
297 static void oop_store_not_in_heap(T* addr, oop value) {
298 Raw::oop_store(addr, value);
299 }
300
301 template <typename T>
302 static oop oop_atomic_cmpxchg_not_in_heap(T* addr, oop compare_value, oop new_value) {
303 return Raw::oop_atomic_cmpxchg(addr, compare_value, new_value);
304 }
305
306 template <typename T>
307 static oop oop_atomic_xchg_not_in_heap(T* addr, oop new_value) {
308 return Raw::oop_atomic_xchg(addr, new_value);
309 }
310
311 // Clone barrier support
312 static void clone_in_heap(oop src, oop dst, size_t size) {
313 Raw::clone(src, dst, size);
314 }
315 };
316 };
317
318 template<typename T>
319 inline T* barrier_set_cast(BarrierSet* bs) {
320 assert(bs->is_a(BarrierSet::GetName<T>::value), "wrong type of barrier set");
321 return static_cast<T*>(bs);
322 }
323
324 #endif // SHARE_GC_SHARED_BARRIERSET_HPP
|
295
296 template <typename T>
297 static void oop_store_not_in_heap(T* addr, oop value) {
298 Raw::oop_store(addr, value);
299 }
300
301 template <typename T>
302 static oop oop_atomic_cmpxchg_not_in_heap(T* addr, oop compare_value, oop new_value) {
303 return Raw::oop_atomic_cmpxchg(addr, compare_value, new_value);
304 }
305
306 template <typename T>
307 static oop oop_atomic_xchg_not_in_heap(T* addr, oop new_value) {
308 return Raw::oop_atomic_xchg(addr, new_value);
309 }
310
311 // Clone barrier support
312 static void clone_in_heap(oop src, oop dst, size_t size) {
313 Raw::clone(src, dst, size);
314 }
315
316 static void value_copy_in_heap(const ValuePayload& src, const ValuePayload& dst) {
317 Raw::value_copy(src, dst);
318 }
319
320 static void value_store_null_in_heap(const ValuePayload& dst) {
321 Raw::value_store_null(dst);
322 }
323 };
324 };
325
326 template<typename T>
327 inline T* barrier_set_cast(BarrierSet* bs) {
328 assert(bs->is_a(BarrierSet::GetName<T>::value), "wrong type of barrier set");
329 return static_cast<T*>(bs);
330 }
331
332 #endif // SHARE_GC_SHARED_BARRIERSET_HPP
|