RFR[13]: 8224674: NMethod state machine is not monotonic

dean.long at oracle.com dean.long at oracle.com
Tue Jul 9 21:31:54 UTC 2019


On 7/1/19 6:12 AM, Erik Österlund wrote:
> For ZGC I moved OSR nmethod unlinking to before the unlinking (where 
> unlinking code belongs), instead of after the handshake (intended for 
> deleting things safely unlinked).
> Strictly speaking, moving the OSR nmethod unlinking removes the racing 
> between make_not_entrant and make_unloaded, but I still want the 
> monotonicity guards to make this code more robust. 

I see where you added OSR nmethod unlinking, but not where you removed 
it, so it's not obvious it was a "move".

Would it make sense for nmethod::unlink_from_method() to do the OSR 
unlinking, or to assert that it has already been done?

The new bailout in the middle of nmethod::make_not_entrant_or_zombie() 
worries me a little, because the code up to that point has side-effects, 
and we could be bailing out in an unexpected state.

dl



More information about the hotspot-dev mailing list