--- a/src/hotspot/share/gc/z/zRootsIterator.cpp Mon Nov 25 12:32:40 2019 +0100
+++ b/src/hotspot/share/gc/z/zRootsIterator.cpp Mon Nov 25 12:33:15 2019 +0100
@@ -91,7 +91,7 @@
template <typename T, void (T::*F)(ZRootsIteratorClosure*)>
void ZSerialOopsDo<T, F>::oops_do(ZRootsIteratorClosure* cl) {
- if (!_claimed && Atomic::cmpxchg(true, &_claimed, false) == false) {
+ if (!_claimed && Atomic::cmpxchg(&_claimed, false, true) == false) {
(_iter->*F)(cl);
}
}
@@ -118,7 +118,7 @@
template <typename T, void (T::*F)(BoolObjectClosure*, ZRootsIteratorClosure*)>
void ZSerialWeakOopsDo<T, F>::weak_oops_do(BoolObjectClosure* is_alive, ZRootsIteratorClosure* cl) {
- if (!_claimed && Atomic::cmpxchg(true, &_claimed, false) == false) {
+ if (!_claimed && Atomic::cmpxchg(&_claimed, false, true) == false) {
(_iter->*F)(is_alive, cl);
}
}