< 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 >