87 arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw, 88 size_t length); 89 private: 90 // Failing checkcast or check null during copy, still needs barrier 91 template <typename T> 92 static inline void oop_arraycopy_partial_barrier(BarrierSetT *bs, T* dst_raw, T* p); 93 public: 94 static void clone_in_heap(oop src, oop dst, size_t size); 95 96 static void oop_store_in_heap_at(oop base, ptrdiff_t offset, oop value) { 97 oop_store_in_heap(AccessInternal::oop_field_addr<decorators>(base, offset), value); 98 } 99 100 static oop oop_atomic_xchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset) { 101 return oop_atomic_xchg_in_heap(new_value, AccessInternal::oop_field_addr<decorators>(base, offset)); 102 } 103 104 static oop oop_atomic_cmpxchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset, oop compare_value) { 105 return oop_atomic_cmpxchg_in_heap(new_value, AccessInternal::oop_field_addr<decorators>(base, offset), compare_value); 106 } 107 }; 108 }; 109 110 template<> 111 struct BarrierSet::GetName<ModRefBarrierSet> { 112 static const BarrierSet::Name value = BarrierSet::ModRef; 113 }; 114 115 #endif // SHARE_GC_SHARED_MODREFBARRIERSET_HPP | 87 arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw, 88 size_t length); 89 private: 90 // Failing checkcast or check null during copy, still needs barrier 91 template <typename T> 92 static inline void oop_arraycopy_partial_barrier(BarrierSetT *bs, T* dst_raw, T* p); 93 public: 94 static void clone_in_heap(oop src, oop dst, size_t size); 95 96 static void oop_store_in_heap_at(oop base, ptrdiff_t offset, oop value) { 97 oop_store_in_heap(AccessInternal::oop_field_addr<decorators>(base, offset), value); 98 } 99 100 static oop oop_atomic_xchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset) { 101 return oop_atomic_xchg_in_heap(new_value, AccessInternal::oop_field_addr<decorators>(base, offset)); 102 } 103 104 static oop oop_atomic_cmpxchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset, oop compare_value) { 105 return oop_atomic_cmpxchg_in_heap(new_value, AccessInternal::oop_field_addr<decorators>(base, offset), compare_value); 106 } 107 108 static void value_copy_in_heap(void* src, void* dst, ValueKlass* md); 109 }; 110 }; 111 112 template<> 113 struct BarrierSet::GetName<ModRefBarrierSet> { 114 static const BarrierSet::Name value = BarrierSet::ModRef; 115 }; 116 117 #endif // SHARE_GC_SHARED_MODREFBARRIERSET_HPP |