@@ -63,7 +63,7 @@ class ShenandoahConcurrentCoalesceAndFillTask : public WorkerTask {
6363 uint _nworkers;
6464 ShenandoahHeapRegion** _coalesce_and_fill_region_array;
6565 uint _coalesce_and_fill_region_count;
66- volatile bool _is_preempted;
66+ Atomic< bool > _is_preempted;
6767
6868public:
6969 ShenandoahConcurrentCoalesceAndFillTask (uint nworkers,
@@ -88,15 +88,15 @@ class ShenandoahConcurrentCoalesceAndFillTask : public WorkerTask {
8888
8989 if (!r->oop_coalesce_and_fill (true )) {
9090 // Coalesce and fill has been preempted
91- AtomicAccess::store (& _is_preempted, true );
91+ _is_preempted. store_relaxed ( true );
9292 return ;
9393 }
9494 }
9595 }
9696
9797 // Value returned from is_completed() is only valid after all worker thread have terminated.
9898 bool is_completed () {
99- return !AtomicAccess::load (& _is_preempted);
99+ return !_is_preempted. load_relaxed ( );
100100 }
101101};
102102
@@ -147,23 +147,23 @@ void ShenandoahOldGeneration::augment_promoted_reserve(size_t increment) {
147147
148148void ShenandoahOldGeneration::reset_promoted_expended () {
149149 shenandoah_assert_heaplocked_or_safepoint ();
150- AtomicAccess::store (& _promoted_expended, static_cast < size_t >( 0 ) );
151- AtomicAccess::store (& _promotion_failure_count, static_cast < size_t >( 0 ) );
152- AtomicAccess::store (& _promotion_failure_words, static_cast < size_t >( 0 ) );
150+ _promoted_expended. store_relaxed ( 0 );
151+ _promotion_failure_count. store_relaxed ( 0 );
152+ _promotion_failure_words. store_relaxed ( 0 );
153153}
154154
155155size_t ShenandoahOldGeneration::expend_promoted (size_t increment) {
156156 shenandoah_assert_heaplocked_or_safepoint ();
157157 assert (get_promoted_expended () + increment <= get_promoted_reserve (), " Do not expend more promotion than budgeted" );
158- return AtomicAccess::add (& _promoted_expended, increment);
158+ return _promoted_expended. add_then_fetch ( increment);
159159}
160160
161161size_t ShenandoahOldGeneration::unexpend_promoted (size_t decrement) {
162- return AtomicAccess::sub (& _promoted_expended, decrement);
162+ return _promoted_expended. sub_then_fetch ( decrement);
163163}
164164
165165size_t ShenandoahOldGeneration::get_promoted_expended () const {
166- return AtomicAccess::load (& _promoted_expended);
166+ return _promoted_expended. load_relaxed ( );
167167}
168168
169169bool ShenandoahOldGeneration::can_allocate (const ShenandoahAllocRequest &req) const {
@@ -582,8 +582,8 @@ void ShenandoahOldGeneration::handle_failed_evacuation() {
582582}
583583
584584void ShenandoahOldGeneration::handle_failed_promotion (Thread* thread, size_t size) {
585- AtomicAccess::inc (& _promotion_failure_count);
586- AtomicAccess::add (& _promotion_failure_words, size);
585+ _promotion_failure_count. add_then_fetch ( 1UL );
586+ _promotion_failure_words. and_then_fetch ( size);
587587
588588 LogTarget (Debug, gc, plab) lt;
589589 LogStream ls (lt);
0 commit comments