# HG changeset patch # User stefank # Date 1574690175 -3600 # Node ID 1647ed87bf1ef2d205571b19ad5e0a8241933b22 # Parent 623722a6aeb98e63ade808b1308d7973a57268ce 8234010: ZGC: Change ZResurrection to use Atomic::load/store Reviewed-by: pliden, eosterlund diff -r 623722a6aeb9 -r 1647ed87bf1e src/hotspot/share/gc/z/zResurrection.cpp --- a/src/hotspot/share/gc/z/zResurrection.cpp Mon Nov 25 12:33:15 2019 +0100 +++ b/src/hotspot/share/gc/z/zResurrection.cpp Mon Nov 25 14:56:15 2019 +0100 @@ -23,7 +23,7 @@ #include "precompiled.hpp" #include "gc/z/zResurrection.hpp" -#include "runtime/orderAccess.hpp" +#include "runtime/atomic.hpp" #include "runtime/safepoint.hpp" #include "utilities/debug.hpp" @@ -35,8 +35,8 @@ } void ZResurrection::unblock() { - // We use a storestore barrier to make sure all healed - // oops are visible before we unblock resurrection. - OrderAccess::storestore(); - _blocked = false; + // 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(&_blocked, false); } diff -r 623722a6aeb9 -r 1647ed87bf1e src/hotspot/share/gc/z/zResurrection.inline.hpp --- a/src/hotspot/share/gc/z/zResurrection.inline.hpp Mon Nov 25 12:33:15 2019 +0100 +++ b/src/hotspot/share/gc/z/zResurrection.inline.hpp Mon Nov 25 14:56:15 2019 +0100 @@ -25,14 +25,10 @@ #define SHARE_GC_Z_ZRESURRECTION_INLINE_HPP #include "gc/z/zResurrection.hpp" -#include "runtime/orderAccess.hpp" +#include "runtime/atomic.hpp" inline bool ZResurrection::is_blocked() { - // We use a loadload barrier to make sure we are not - // seeing oops from a time when resurrection was blocked. - const bool blocked = _blocked; - OrderAccess::loadload(); - return blocked; + return Atomic::load(&_blocked); } #endif // SHARE_GC_Z_ZRESURRECTION_INLINE_HPP