< prev index next >

src/hotspot/share/utilities/singleWriterSynchronizer.cpp

Print this page

        

*** 83,93 **** OrderAccess::fence(); // (4) Wait for all the critical sections started before the change // to complete, e.g. for the value of old_ptr to catch up with old. // Loop because there could be pending wakeups unrelated to this // synchronize request. ! while (old != OrderAccess::load_acquire(old_ptr)) { _wakeup.wait(); } // (5) Drain any pending wakeups. A critical section exit may have // completed our request and seen our _waiting_for before we checked // for completion. There are also possible (though rare) spurious --- 83,93 ---- OrderAccess::fence(); // (4) Wait for all the critical sections started before the change // to complete, e.g. for the value of old_ptr to catch up with old. // Loop because there could be pending wakeups unrelated to this // synchronize request. ! while (old != Atomic::load_acquire(old_ptr)) { _wakeup.wait(); } // (5) Drain any pending wakeups. A critical section exit may have // completed our request and seen our _waiting_for before we checked // for completion. There are also possible (though rare) spurious
< prev index next >