< prev index next >

src/hotspot/share/gc/z/zBarrierSet.hpp

Print this page

 84     static void store_barrier_heap_with_healing(zpointer* p);
 85     static void store_barrier_heap_without_healing(zpointer* p);
 86     static void no_keep_alive_store_barrier_heap(zpointer* p);
 87 
 88     static void store_barrier_native_with_healing(zpointer* p);
 89     static void store_barrier_native_without_healing(zpointer* p);
 90 
 91     [[noreturn]]
 92     static void unsupported();
 93     static zaddress load_barrier(narrowOop* p, zpointer o) { unsupported(); return zaddress::null; }
 94     static zaddress load_barrier_on_unknown_oop_ref(oop base, ptrdiff_t offset, narrowOop* p, zpointer o) { unsupported(); return zaddress::null; }
 95     static void store_barrier_heap_with_healing(narrowOop* p) { unsupported(); }
 96     static void store_barrier_heap_without_healing(narrowOop* p)  { unsupported(); }
 97     static void no_keep_alive_store_barrier_heap(narrowOop* p)  { unsupported(); }
 98     static void store_barrier_native_with_healing(narrowOop* p)  { unsupported(); }
 99     static void store_barrier_native_without_healing(narrowOop* p)  { unsupported(); }
100 
101     static zaddress oop_copy_one_barriers(zpointer* dst, zpointer* src);
102     static OopCopyResult oop_copy_one_check_cast(zpointer* dst, zpointer* src, Klass* dst_klass);
103     static OopCopyResult oop_copy_one(zpointer* dst, zpointer* src);

104 
105     static OopCopyResult oop_arraycopy_in_heap_check_cast(zpointer* dst, zpointer* src, size_t length, Klass* dst_klass);
106     static OopCopyResult oop_arraycopy_in_heap_no_check_cast(zpointer* dst, zpointer* src, size_t length);
107 
108   public:
109     //
110     // In heap
111     //
112     static oop oop_load_in_heap(zpointer* p);
113     static oop oop_load_in_heap(oop* p)       { return oop_load_in_heap((zpointer*)p); };
114     static oop oop_load_in_heap(narrowOop* p) { unsupported(); return nullptr; }
115 
116     static oop oop_load_in_heap_at(oop base, ptrdiff_t offset);
117 
118     static void oop_store_in_heap(zpointer* p, oop value);
119     static void oop_store_in_heap(oop* p, oop value)       { oop_store_in_heap((zpointer*)p, value); }
120     static void oop_store_in_heap(narrowOop* p, oop value) { unsupported(); }
121     static void oop_store_in_heap_at(oop base, ptrdiff_t offset, oop value);
122 
123     static void oop_store_not_in_heap(zpointer* p, oop value);

134     static oop oop_atomic_xchg_in_heap(oop* p, oop new_value)       { return oop_atomic_xchg_in_heap((zpointer*)p, new_value); }
135     static oop oop_atomic_xchg_in_heap(narrowOop* p, oop new_value) { unsupported(); return nullptr; }
136     static oop oop_atomic_xchg_in_heap_at(oop base, ptrdiff_t offset, oop new_value);
137 
138     static OopCopyResult oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, zpointer* src_raw,
139                                                arrayOop dst_obj, size_t dst_offset_in_bytes, zpointer* dst_raw,
140                                                size_t length);
141     static OopCopyResult oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, oop* src_raw,
142                                                arrayOop dst_obj, size_t dst_offset_in_bytes, oop* dst_raw,
143                                                size_t length) {
144       return oop_arraycopy_in_heap(src_obj, src_offset_in_bytes, (zpointer*)src_raw,
145                                    dst_obj, dst_offset_in_bytes, (zpointer*)dst_raw,
146                                    length);
147     }
148     static OopCopyResult oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, narrowOop* src_raw,
149                                                arrayOop dst_obj, size_t dst_offset_in_bytes, narrowOop* dst_raw,
150                                                size_t length) { unsupported(); }
151 
152     static void clone_in_heap(oop src, oop dst, size_t size);
153 



154     //
155     // Not in heap
156     //
157     static oop oop_load_not_in_heap(zpointer* p);
158     static oop oop_load_not_in_heap(oop* p);
159     static oop oop_load_not_in_heap(narrowOop* p) { unsupported(); return nullptr; }
160 
161     static oop oop_atomic_cmpxchg_not_in_heap(zpointer* p, oop compare_value, oop new_value);
162     static oop oop_atomic_cmpxchg_not_in_heap(oop* p, oop compare_value, oop new_value) {
163       return oop_atomic_cmpxchg_not_in_heap((zpointer*)p, compare_value, new_value);
164     }
165     static oop oop_atomic_cmpxchg_not_in_heap(narrowOop* addr, oop compare_value, oop new_value) { unsupported(); return nullptr; }
166 
167     static oop oop_atomic_xchg_not_in_heap(zpointer* p, oop new_value);
168     static oop oop_atomic_xchg_not_in_heap(oop* p, oop new_value)       { return oop_atomic_xchg_not_in_heap((zpointer*)p, new_value); }
169     static oop oop_atomic_xchg_not_in_heap(narrowOop* p, oop new_value) { unsupported(); return nullptr; }
170   };
171 };
172 
173 template<> struct BarrierSet::GetName<ZBarrierSet> {

 84     static void store_barrier_heap_with_healing(zpointer* p);
 85     static void store_barrier_heap_without_healing(zpointer* p);
 86     static void no_keep_alive_store_barrier_heap(zpointer* p);
 87 
 88     static void store_barrier_native_with_healing(zpointer* p);
 89     static void store_barrier_native_without_healing(zpointer* p);
 90 
 91     [[noreturn]]
 92     static void unsupported();
 93     static zaddress load_barrier(narrowOop* p, zpointer o) { unsupported(); return zaddress::null; }
 94     static zaddress load_barrier_on_unknown_oop_ref(oop base, ptrdiff_t offset, narrowOop* p, zpointer o) { unsupported(); return zaddress::null; }
 95     static void store_barrier_heap_with_healing(narrowOop* p) { unsupported(); }
 96     static void store_barrier_heap_without_healing(narrowOop* p)  { unsupported(); }
 97     static void no_keep_alive_store_barrier_heap(narrowOop* p)  { unsupported(); }
 98     static void store_barrier_native_with_healing(narrowOop* p)  { unsupported(); }
 99     static void store_barrier_native_without_healing(narrowOop* p)  { unsupported(); }
100 
101     static zaddress oop_copy_one_barriers(zpointer* dst, zpointer* src);
102     static OopCopyResult oop_copy_one_check_cast(zpointer* dst, zpointer* src, Klass* dst_klass);
103     static OopCopyResult oop_copy_one(zpointer* dst, zpointer* src);
104     static OopCopyResult oop_clear_one(zpointer* dst);
105 
106     static OopCopyResult oop_arraycopy_in_heap_check_cast(zpointer* dst, zpointer* src, size_t length, Klass* dst_klass);
107     static OopCopyResult oop_arraycopy_in_heap_no_check_cast(zpointer* dst, zpointer* src, size_t length);
108 
109   public:
110     //
111     // In heap
112     //
113     static oop oop_load_in_heap(zpointer* p);
114     static oop oop_load_in_heap(oop* p)       { return oop_load_in_heap((zpointer*)p); };
115     static oop oop_load_in_heap(narrowOop* p) { unsupported(); return nullptr; }
116 
117     static oop oop_load_in_heap_at(oop base, ptrdiff_t offset);
118 
119     static void oop_store_in_heap(zpointer* p, oop value);
120     static void oop_store_in_heap(oop* p, oop value)       { oop_store_in_heap((zpointer*)p, value); }
121     static void oop_store_in_heap(narrowOop* p, oop value) { unsupported(); }
122     static void oop_store_in_heap_at(oop base, ptrdiff_t offset, oop value);
123 
124     static void oop_store_not_in_heap(zpointer* p, oop value);

135     static oop oop_atomic_xchg_in_heap(oop* p, oop new_value)       { return oop_atomic_xchg_in_heap((zpointer*)p, new_value); }
136     static oop oop_atomic_xchg_in_heap(narrowOop* p, oop new_value) { unsupported(); return nullptr; }
137     static oop oop_atomic_xchg_in_heap_at(oop base, ptrdiff_t offset, oop new_value);
138 
139     static OopCopyResult oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, zpointer* src_raw,
140                                                arrayOop dst_obj, size_t dst_offset_in_bytes, zpointer* dst_raw,
141                                                size_t length);
142     static OopCopyResult oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, oop* src_raw,
143                                                arrayOop dst_obj, size_t dst_offset_in_bytes, oop* dst_raw,
144                                                size_t length) {
145       return oop_arraycopy_in_heap(src_obj, src_offset_in_bytes, (zpointer*)src_raw,
146                                    dst_obj, dst_offset_in_bytes, (zpointer*)dst_raw,
147                                    length);
148     }
149     static OopCopyResult oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, narrowOop* src_raw,
150                                                arrayOop dst_obj, size_t dst_offset_in_bytes, narrowOop* dst_raw,
151                                                size_t length) { unsupported(); }
152 
153     static void clone_in_heap(oop src, oop dst, size_t size);
154 
155     static void value_copy_in_heap(const ValuePayload& src, const ValuePayload& dst);
156     static void value_store_null_in_heap(const ValuePayload& dst);
157 
158     //
159     // Not in heap
160     //
161     static oop oop_load_not_in_heap(zpointer* p);
162     static oop oop_load_not_in_heap(oop* p);
163     static oop oop_load_not_in_heap(narrowOop* p) { unsupported(); return nullptr; }
164 
165     static oop oop_atomic_cmpxchg_not_in_heap(zpointer* p, oop compare_value, oop new_value);
166     static oop oop_atomic_cmpxchg_not_in_heap(oop* p, oop compare_value, oop new_value) {
167       return oop_atomic_cmpxchg_not_in_heap((zpointer*)p, compare_value, new_value);
168     }
169     static oop oop_atomic_cmpxchg_not_in_heap(narrowOop* addr, oop compare_value, oop new_value) { unsupported(); return nullptr; }
170 
171     static oop oop_atomic_xchg_not_in_heap(zpointer* p, oop new_value);
172     static oop oop_atomic_xchg_not_in_heap(oop* p, oop new_value)       { return oop_atomic_xchg_not_in_heap((zpointer*)p, new_value); }
173     static oop oop_atomic_xchg_not_in_heap(narrowOop* p, oop new_value) { unsupported(); return nullptr; }
174   };
175 };
176 
177 template<> struct BarrierSet::GetName<ZBarrierSet> {
< prev index next >