RFR: 8234009: ZGC: Move resurrection unblock to before the _unload.purge() call

Stefan Karlsson stefan.karlsson at oracle.com
Fri Nov 22 13:15:58 UTC 2019


Thanks, Per.

StefanK

On 2019-11-22 14:08, Per Liden wrote:
> Looks good!
> 
> /Per
> 
> On 11/21/19 2:28 PM, Stefan Karlsson wrote:
>> 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