< prev index next >
src/hotspot/share/gc/z/zMarkTerminate.inline.hpp
Print this page
@@ -31,15 +31,15 @@
_nworkers(0),
_nworking_stage0(0),
_nworking_stage1(0) {}
inline bool ZMarkTerminate::enter_stage(volatile uint* nworking_stage) {
- return Atomic::sub(1u, nworking_stage) == 0;
+ return Atomic::sub(nworking_stage, 1u) == 0;
}
inline void ZMarkTerminate::exit_stage(volatile uint* nworking_stage) {
- Atomic::add(1u, nworking_stage);
+ Atomic::add(nworking_stage, 1u);
}
inline bool ZMarkTerminate::try_exit_stage(volatile uint* nworking_stage) {
uint nworking = Atomic::load(nworking_stage);
@@ -47,11 +47,11 @@
if (nworking == 0) {
return false;
}
const uint new_nworking = nworking + 1;
- const uint prev_nworking = Atomic::cmpxchg(new_nworking, nworking_stage, nworking);
+ const uint prev_nworking = Atomic::cmpxchg(nworking_stage, nworking, new_nworking);
if (prev_nworking == nworking) {
// Success
return true;
}
< prev index next >