8377704: Shenandoah: Convert ShenandoahNMethod to use Atomic<T>

Reviewed-by: shade, xpeng, wkemper
This commit is contained in:
Ben Taylor 2026-02-16 20:56:24 +00:00 committed by Xiaolong Peng
parent 2925eb8cfb
commit fbc705d2cc
2 changed files with 6 additions and 5 deletions

View File

@ -433,8 +433,8 @@ void ShenandoahNMethodTableSnapshot::parallel_nmethods_do(NMethodClosure *f) {
ShenandoahNMethod** const list = _list->list();
size_t max = (size_t)_limit;
while (_claimed < max) {
size_t cur = AtomicAccess::fetch_then_add(&_claimed, stride, memory_order_relaxed);
while (_claimed.load_relaxed() < max) {
size_t cur = _claimed.fetch_then_add(stride, memory_order_relaxed);
size_t start = cur;
size_t end = MIN2(cur + stride, max);
if (start >= max) break;
@ -457,8 +457,8 @@ void ShenandoahNMethodTableSnapshot::concurrent_nmethods_do(NMethodClosure* cl)
ShenandoahNMethod** list = _list->list();
size_t max = (size_t)_limit;
while (_claimed < max) {
size_t cur = AtomicAccess::fetch_then_add(&_claimed, stride, memory_order_relaxed);
while (_claimed.load_relaxed() < max) {
size_t cur = _claimed.fetch_then_add(stride, memory_order_relaxed);
size_t start = cur;
size_t end = MIN2(cur + stride, max);
if (start >= max) break;

View File

@ -30,6 +30,7 @@
#include "gc/shenandoah/shenandoahLock.hpp"
#include "gc/shenandoah/shenandoahPadding.hpp"
#include "memory/allocation.hpp"
#include "runtime/atomic.hpp"
#include "utilities/growableArray.hpp"
// ShenandoahNMethod tuple records the internal locations of oop slots within reclocation stream in
@ -115,7 +116,7 @@ private:
int _limit;
shenandoah_padding(0);
volatile size_t _claimed;
Atomic<size_t> _claimed;
shenandoah_padding(1);
public: