2828
2929#include " gc/shared/accessBarrierSupport.inline.hpp"
3030#include " gc/z/zAddress.inline.hpp"
31- #include " gc/z/zBarrier.inline.hpp"
32- #include " gc/z/zIterator.inline.hpp"
31+ #include " gc/z/zHeap.hpp"
3332#include " gc/z/zNMethod.hpp"
34- #include " memory/iterator.inline .hpp"
33+ #include " oops/objArrayOop .hpp"
3534#include " utilities/debug.hpp"
3635
3736template <DecoratorSet decorators, typename BarrierSetT>
@@ -68,21 +67,21 @@ inline zaddress ZBarrierSet::AccessBarrier<decorators, BarrierSetT>::load_barrie
6867 if (HasDecorator<decorators, AS_NO_KEEPALIVE>::value) {
6968 if (HasDecorator<decorators, ON_STRONG_OOP_REF>::value) {
7069 // Load barriers on strong oop refs don't keep objects alive
71- return ZBarrier ::load_barrier_on_oop_field_preloaded (p, o);
70+ return ZBarrierSet ::load_barrier_on_oop_field_preloaded (p, o);
7271 } else if (HasDecorator<decorators, ON_WEAK_OOP_REF>::value) {
73- return ZBarrier ::no_keep_alive_load_barrier_on_weak_oop_field_preloaded (p, o);
72+ return ZBarrierSet ::no_keep_alive_load_barrier_on_weak_oop_field_preloaded (p, o);
7473 } else {
7574 assert ((HasDecorator<decorators, ON_PHANTOM_OOP_REF>::value), " Must be" );
76- return ZBarrier ::no_keep_alive_load_barrier_on_phantom_oop_field_preloaded (p, o);
75+ return ZBarrierSet ::no_keep_alive_load_barrier_on_phantom_oop_field_preloaded (p, o);
7776 }
7877 } else {
7978 if (HasDecorator<decorators, ON_STRONG_OOP_REF>::value) {
80- return ZBarrier ::load_barrier_on_oop_field_preloaded (p, o);
79+ return ZBarrierSet ::load_barrier_on_oop_field_preloaded (p, o);
8180 } else if (HasDecorator<decorators, ON_WEAK_OOP_REF>::value) {
82- return ZBarrier ::load_barrier_on_weak_oop_field_preloaded (p, o);
81+ return ZBarrierSet ::load_barrier_on_weak_oop_field_preloaded (p, o);
8382 } else {
8483 assert ((HasDecorator<decorators, ON_PHANTOM_OOP_REF>::value), " Must be" );
85- return ZBarrier ::load_barrier_on_phantom_oop_field_preloaded (p, o);
84+ return ZBarrierSet ::load_barrier_on_phantom_oop_field_preloaded (p, o);
8685 }
8786 }
8887}
@@ -97,21 +96,21 @@ inline zaddress ZBarrierSet::AccessBarrier<decorators, BarrierSetT>::load_barrie
9796 if (HasDecorator<decorators, AS_NO_KEEPALIVE>::value) {
9897 if (decorators_known_strength & ON_STRONG_OOP_REF) {
9998 // Load barriers on strong oop refs don't keep objects alive
100- return ZBarrier ::load_barrier_on_oop_field_preloaded (p, o);
99+ return ZBarrierSet ::load_barrier_on_oop_field_preloaded (p, o);
101100 } else if (decorators_known_strength & ON_WEAK_OOP_REF) {
102- return ZBarrier ::no_keep_alive_load_barrier_on_weak_oop_field_preloaded (p, o);
101+ return ZBarrierSet ::no_keep_alive_load_barrier_on_weak_oop_field_preloaded (p, o);
103102 } else {
104103 assert (decorators_known_strength & ON_PHANTOM_OOP_REF, " Must be" );
105- return ZBarrier ::no_keep_alive_load_barrier_on_phantom_oop_field_preloaded (p, o);
104+ return ZBarrierSet ::no_keep_alive_load_barrier_on_phantom_oop_field_preloaded (p, o);
106105 }
107106 } else {
108107 if (decorators_known_strength & ON_STRONG_OOP_REF) {
109- return ZBarrier ::load_barrier_on_oop_field_preloaded (p, o);
108+ return ZBarrierSet ::load_barrier_on_oop_field_preloaded (p, o);
110109 } else if (decorators_known_strength & ON_WEAK_OOP_REF) {
111- return ZBarrier ::load_barrier_on_weak_oop_field_preloaded (p, o);
110+ return ZBarrierSet ::load_barrier_on_weak_oop_field_preloaded (p, o);
112111 } else {
113112 assert (decorators_known_strength & ON_PHANTOM_OOP_REF, " Must be" );
114- return ZBarrier ::load_barrier_on_phantom_oop_field_preloaded (p, o);
113+ return ZBarrierSet ::load_barrier_on_phantom_oop_field_preloaded (p, o);
115114 }
116115 }
117116}
@@ -126,7 +125,7 @@ inline zpointer ZBarrierSet::store_good(oop obj) {
126125template <DecoratorSet decorators, typename BarrierSetT>
127126inline void ZBarrierSet::AccessBarrier<decorators, BarrierSetT>::store_barrier_heap_with_healing(zpointer* p) {
128127 if (!HasDecorator<decorators, IS_DEST_UNINITIALIZED>::value) {
129- ZBarrier ::store_barrier_on_heap_oop_field (p, true /* heal */ );
128+ ZBarrierSet ::store_barrier_on_heap_oop_field (p, true /* heal */ );
130129 } else {
131130 assert (false , " Should not be used on uninitialized memory" );
132131 }
@@ -135,21 +134,21 @@ inline void ZBarrierSet::AccessBarrier<decorators, BarrierSetT>::store_barrier_h
135134template <DecoratorSet decorators, typename BarrierSetT>
136135inline void ZBarrierSet::AccessBarrier<decorators, BarrierSetT>::store_barrier_heap_without_healing(zpointer* p) {
137136 if (!HasDecorator<decorators, IS_DEST_UNINITIALIZED>::value) {
138- ZBarrier ::store_barrier_on_heap_oop_field (p, false /* heal */ );
137+ ZBarrierSet ::store_barrier_on_heap_oop_field (p, false /* heal */ );
139138 }
140139}
141140
142141template <DecoratorSet decorators, typename BarrierSetT>
143142inline void ZBarrierSet::AccessBarrier<decorators, BarrierSetT>::no_keep_alive_store_barrier_heap(zpointer* p) {
144143 if (!HasDecorator<decorators, IS_DEST_UNINITIALIZED>::value) {
145- ZBarrier ::no_keep_alive_store_barrier_on_heap_oop_field (p);
144+ ZBarrierSet ::no_keep_alive_store_barrier_on_heap_oop_field (p);
146145 }
147146}
148147
149148template <DecoratorSet decorators, typename BarrierSetT>
150149inline void ZBarrierSet::AccessBarrier<decorators, BarrierSetT>::store_barrier_native_with_healing(zpointer* p) {
151150 if (!HasDecorator<decorators, IS_DEST_UNINITIALIZED>::value) {
152- ZBarrier ::store_barrier_on_native_oop_field (p, true /* heal */ );
151+ ZBarrierSet ::store_barrier_on_native_oop_field (p, true /* heal */ );
153152 } else {
154153 assert (false , " Should not be used on uninitialized memory" );
155154 }
@@ -158,7 +157,7 @@ inline void ZBarrierSet::AccessBarrier<decorators, BarrierSetT>::store_barrier_n
158157template <DecoratorSet decorators, typename BarrierSetT>
159158inline void ZBarrierSet::AccessBarrier<decorators, BarrierSetT>::store_barrier_native_without_healing(zpointer* p) {
160159 if (!HasDecorator<decorators, IS_DEST_UNINITIALIZED>::value) {
161- ZBarrier ::store_barrier_on_native_oop_field (p, false /* heal */ );
160+ ZBarrierSet ::store_barrier_on_native_oop_field (p, false /* heal */ );
162161 }
163162}
164163
@@ -325,7 +324,7 @@ template <DecoratorSet decorators, typename BarrierSetT>
325324inline zaddress ZBarrierSet::AccessBarrier<decorators, BarrierSetT>::oop_copy_one_barriers(zpointer* dst, zpointer* src) {
326325 store_barrier_heap_without_healing (dst);
327326
328- return ZBarrier ::load_barrier_on_oop_field (src);
327+ return ZBarrierSet ::load_barrier_on_oop_field (src);
329328}
330329
331330template <DecoratorSet decorators, typename BarrierSetT>
@@ -402,31 +401,6 @@ inline bool ZBarrierSet::AccessBarrier<decorators, BarrierSetT>::oop_arraycopy_i
402401 return oop_arraycopy_in_heap_no_check_cast (dst, src, length);
403402}
404403
405- class ZColorStoreGoodOopClosure : public BasicOopIterateClosure {
406- public:
407- virtual void do_oop (oop* p_) {
408- volatile zpointer* const p = (volatile zpointer*)p_;
409- const zpointer ptr = ZBarrier::load_atomic (p);
410- const zaddress addr = ZPointer::uncolor (ptr);
411- AtomicAccess::store (p, ZAddress::store_good (addr));
412- }
413-
414- virtual void do_oop (narrowOop* p) {
415- ShouldNotReachHere ();
416- }
417- };
418-
419- class ZLoadBarrierOopClosure : public BasicOopIterateClosure {
420- public:
421- virtual void do_oop (oop* p) {
422- ZBarrier::load_barrier_on_oop_field ((zpointer*)p);
423- }
424-
425- virtual void do_oop (narrowOop* p) {
426- ShouldNotReachHere ();
427- }
428- };
429-
430404template <DecoratorSet decorators, typename BarrierSetT>
431405inline void ZBarrierSet::AccessBarrier<decorators, BarrierSetT>::clone_in_heap(oop src, oop dst, size_t size) {
432406 check_is_valid_zaddress (src);
@@ -443,17 +417,13 @@ inline void ZBarrierSet::AccessBarrier<decorators, BarrierSetT>::clone_in_heap(o
443417 }
444418
445419 // Fix the oops
446- ZLoadBarrierOopClosure cl;
447- ZIterator::oop_iterate (src, &cl);
420+ ZBarrierSet::load_barrier_all (src, size);
448421
449422 // Clone the object
450423 Raw::clone_in_heap (src, dst, size);
451424
452- assert (dst->is_typeArray () || ZHeap::heap ()->is_young (to_zaddress (dst)), " ZColorStoreGoodOopClosure is only valid for young objects" );
453-
454425 // Color store good before handing out
455- ZColorStoreGoodOopClosure cl_sg;
456- ZIterator::oop_iterate (dst, &cl_sg);
426+ ZBarrierSet::color_store_good_all (dst, size);
457427}
458428
459429//
0 commit comments