< prev index next >
src/hotspot/share/gc/shenandoah/shenandoahHeapRegionSet.cpp
Print this page
*** 95,105 ****
jint saved_current = _current_index;
size_t index = (size_t)saved_current;
while(index < num_regions) {
if (_set->is_in(index)) {
! jint cur = Atomic::cmpxchg((jint)(index + 1), &_current_index, saved_current);
assert(cur >= (jint)saved_current, "Must move forward");
if (cur == saved_current) {
assert(_set->is_in(index), "Invariant");
return _heap->get_region(index);
} else {
--- 95,105 ----
jint saved_current = _current_index;
size_t index = (size_t)saved_current;
while(index < num_regions) {
if (_set->is_in(index)) {
! jint cur = Atomic::cmpxchg(&_current_index, saved_current, (jint)(index + 1));
assert(cur >= (jint)saved_current, "Must move forward");
if (cur == saved_current) {
assert(_set->is_in(index), "Invariant");
return _heap->get_region(index);
} else {
< prev index next >