< prev index next >
src/hotspot/share/gc/z/zResurrection.cpp
Print this page
*** 21,31 ****
* questions.
*/
#include "precompiled.hpp"
#include "gc/z/zResurrection.hpp"
! #include "runtime/orderAccess.hpp"
#include "runtime/safepoint.hpp"
#include "utilities/debug.hpp"
volatile bool ZResurrection::_blocked = false;
--- 21,31 ----
* questions.
*/
#include "precompiled.hpp"
#include "gc/z/zResurrection.hpp"
! #include "runtime/atomic.hpp"
#include "runtime/safepoint.hpp"
#include "utilities/debug.hpp"
volatile bool ZResurrection::_blocked = false;
*** 33,42 ****
assert(SafepointSynchronize::is_at_safepoint(), "Should be at safepoint");
_blocked = true;
}
void ZResurrection::unblock() {
! // We use a storestore barrier to make sure all healed
! // oops are visible before we unblock resurrection.
! OrderAccess::storestore();
! _blocked = false;
}
--- 33,42 ----
assert(SafepointSynchronize::is_at_safepoint(), "Should be at safepoint");
_blocked = true;
}
void ZResurrection::unblock() {
! // No need for anything stronger than a relaxed store here.
! // The preceeding handshake makes sure that all non-strong
! // oops have already been healed at this point.
! Atomic::store(false, &_blocked);
}
< prev index next >