RFR: 8234009: ZGC: Move resurrection unblock to before the _unload.purge() call
Stefan Karlsson
stefan.karlsson at oracle.com
Thu Nov 21 13:28:29 UTC 2019
Hi all,
Please review this patch to move the resurrection to before the
_unload.purge() call.
https://cr.openjdk.java.net/~stefank/8234009/webrev.01/
https://bugs.openjdk.java.net/browse/JDK-8234009
After JDK-8230661 we are guaranteed that no mutator holds a weak oop
containing a "dead" object when the ZResurrection::unblock() call happens.
Therefore, it doesn't matter if the load barrier that the thread
executes runs the code guarded by ZResurrection::is_blocked() or the
"non-blocked" part, when ZResurrection::unblock() changes the state. As
long as the ZResurrection::unblock() call happens after the handshake,
we are good to go.
Today, we perform the purging and deletion of metadata in
_unload.purge(), and call ZResurrection:unblock() after that. There's no
need to delay the unblocking to after the purge. We have the opportunity
to shrink the resurrection-blocked window by moving the
ZResurrection::unblock() call to before the call to _unload.purge(), but
still after the handshake.
Thanks,
StefanK
More information about the hotspot-gc-dev
mailing list