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