< prev index next >

src/hotspot/share/gc/z/zMarkTerminate.inline.hpp

Print this page

        

*** 31,45 **** _nworkers(0), _nworking_stage0(0), _nworking_stage1(0) {} inline bool ZMarkTerminate::enter_stage(volatile uint* nworking_stage) { ! return Atomic::sub(1u, nworking_stage) == 0; } inline void ZMarkTerminate::exit_stage(volatile uint* nworking_stage) { ! Atomic::add(1u, nworking_stage); } inline bool ZMarkTerminate::try_exit_stage(volatile uint* nworking_stage) { uint nworking = Atomic::load(nworking_stage); --- 31,45 ---- _nworkers(0), _nworking_stage0(0), _nworking_stage1(0) {} inline bool ZMarkTerminate::enter_stage(volatile uint* nworking_stage) { ! return Atomic::sub(nworking_stage, 1u) == 0; } inline void ZMarkTerminate::exit_stage(volatile uint* nworking_stage) { ! Atomic::add(nworking_stage, 1u); } inline bool ZMarkTerminate::try_exit_stage(volatile uint* nworking_stage) { uint nworking = Atomic::load(nworking_stage);
*** 47,57 **** if (nworking == 0) { return false; } const uint new_nworking = nworking + 1; ! const uint prev_nworking = Atomic::cmpxchg(new_nworking, nworking_stage, nworking); if (prev_nworking == nworking) { // Success return true; } --- 47,57 ---- if (nworking == 0) { return false; } const uint new_nworking = nworking + 1; ! const uint prev_nworking = Atomic::cmpxchg(nworking_stage, nworking, new_nworking); if (prev_nworking == nworking) { // Success return true; }
< prev index next >