57 58 template <typename T> 59 static oop load_barrier_on_oop_field_preloaded(T* addr, oop o); 60 61 template <typename T> 62 static oop load_barrier_on_unknown_oop_field_preloaded(oop base, ptrdiff_t offset, T* addr, oop o); 63 64 public: 65 // 66 // In heap 67 // 68 template <typename T> 69 static oop oop_load_in_heap(T* addr); 70 static oop oop_load_in_heap_at(oop base, ptrdiff_t offset); 71 72 template <typename T> 73 static oop oop_atomic_cmpxchg_in_heap(oop new_value, T* addr, oop compare_value); 74 static oop oop_atomic_cmpxchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset, oop compare_value); 75 76 template <typename T> 77 static oop oop_atomic_xchg_in_heap(oop new_value, T* addr); 78 static oop oop_atomic_xchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset); 79 80 template <typename T> 81 static bool oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw, 82 arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw, 83 size_t length); 84 85 static void clone_in_heap(oop src, oop dst, size_t size); 86 87 // 88 // Not in heap 89 // 90 template <typename T> 91 static oop oop_load_not_in_heap(T* addr); 92 93 template <typename T> 94 static oop oop_atomic_cmpxchg_not_in_heap(oop new_value, T* addr, oop compare_value); 95 96 template <typename T> 97 static oop oop_atomic_xchg_not_in_heap(oop new_value, T* addr); 98 }; 99 }; 100 101 template<> struct BarrierSet::GetName<ZBarrierSet> { 102 static const BarrierSet::Name value = BarrierSet::ZBarrierSet; 103 }; 104 105 template<> struct BarrierSet::GetType<BarrierSet::ZBarrierSet> { 106 typedef ::ZBarrierSet type; 107 }; 108 109 #endif // SHARE_GC_Z_ZBARRIERSET_HPP | 57 58 template <typename T> 59 static oop load_barrier_on_oop_field_preloaded(T* addr, oop o); 60 61 template <typename T> 62 static oop load_barrier_on_unknown_oop_field_preloaded(oop base, ptrdiff_t offset, T* addr, oop o); 63 64 public: 65 // 66 // In heap 67 // 68 template <typename T> 69 static oop oop_load_in_heap(T* addr); 70 static oop oop_load_in_heap_at(oop base, ptrdiff_t offset); 71 72 template <typename T> 73 static oop oop_atomic_cmpxchg_in_heap(oop new_value, T* addr, oop compare_value); 74 static oop oop_atomic_cmpxchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset, oop compare_value); 75 76 template <typename T> 77 static oop oop_atomic_xchg_in_heap(T* addr, oop new_value); 78 static oop oop_atomic_xchg_in_heap_at(oop base, ptrdiff_t offset, oop new_value); 79 80 template <typename T> 81 static bool oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw, 82 arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw, 83 size_t length); 84 85 static void clone_in_heap(oop src, oop dst, size_t size); 86 87 // 88 // Not in heap 89 // 90 template <typename T> 91 static oop oop_load_not_in_heap(T* addr); 92 93 template <typename T> 94 static oop oop_atomic_cmpxchg_not_in_heap(oop new_value, T* addr, oop compare_value); 95 96 template <typename T> 97 static oop oop_atomic_xchg_not_in_heap(T* addr, oop new_value); 98 }; 99 }; 100 101 template<> struct BarrierSet::GetName<ZBarrierSet> { 102 static const BarrierSet::Name value = BarrierSet::ZBarrierSet; 103 }; 104 105 template<> struct BarrierSet::GetType<BarrierSet::ZBarrierSet> { 106 typedef ::ZBarrierSet type; 107 }; 108 109 #endif // SHARE_GC_Z_ZBARRIERSET_HPP |