From baf0f45fc7701d2a7d1058e136558ac5642030cd Mon Sep 17 00:00:00 2001 From: Thomas Schatzl Date: Fri, 12 Jun 2026 08:53:57 +0000 Subject: [PATCH] 8385901: G1: G1FullGCPrepareTask::_has_free_compaction_targets should be Atomic Reviewed-by: ayang, iwalulya --- src/hotspot/share/gc/g1/g1FullGCPrepareTask.cpp | 6 +++--- src/hotspot/share/gc/g1/g1FullGCPrepareTask.hpp | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/hotspot/share/gc/g1/g1FullGCPrepareTask.cpp b/src/hotspot/share/gc/g1/g1FullGCPrepareTask.cpp index 86297086b44..031f8ecf601 100644 --- a/src/hotspot/share/gc/g1/g1FullGCPrepareTask.cpp +++ b/src/hotspot/share/gc/g1/g1FullGCPrepareTask.cpp @@ -60,13 +60,13 @@ G1FullGCPrepareTask::G1FullGCPrepareTask(G1FullCollector* collector) : } void G1FullGCPrepareTask::set_has_free_compaction_targets() { - if (!_has_free_compaction_targets) { - _has_free_compaction_targets = true; + if (!has_free_compaction_targets()) { + _has_free_compaction_targets.store_relaxed(true); } } bool G1FullGCPrepareTask::has_free_compaction_targets() { - return _has_free_compaction_targets; + return _has_free_compaction_targets.load_relaxed(); } void G1FullGCPrepareTask::work(uint worker_id) { diff --git a/src/hotspot/share/gc/g1/g1FullGCPrepareTask.hpp b/src/hotspot/share/gc/g1/g1FullGCPrepareTask.hpp index 9d2887c01a6..57bb036d6a0 100644 --- a/src/hotspot/share/gc/g1/g1FullGCPrepareTask.hpp +++ b/src/hotspot/share/gc/g1/g1FullGCPrepareTask.hpp @@ -28,6 +28,7 @@ #include "gc/g1/g1FullGCTask.hpp" #include "gc/g1/g1HeapRegion.hpp" #include "memory/allocation.hpp" +#include "runtime/atomic.hpp" class G1CollectedHeap; class G1CMBitMap; @@ -61,7 +62,7 @@ public: }; class G1FullGCPrepareTask : public G1FullGCTask { - volatile bool _has_free_compaction_targets; + Atomic _has_free_compaction_targets; G1HeapRegionClaimer _hrclaimer; void set_has_free_compaction_targets();