RFR: 8234662: Sweeper should keep current nmethod alive before yielding for ICStub refills
Stefan Karlsson
stefan.karlsson at oracle.com
Tue Dec 3 13:15:36 UTC 2019
Looks good.
StefanK
On 2019-11-22 16:03, erik.osterlund at oracle.com wrote:
> Hi,
>
> Today, when GCs scan the stack, all nmethods roots found from threads
> are nmethods that have gone through an nmethod entry barrier (in the
> case of concurrent class unloading), except the super special sweeper
> nmethod that is currently being processed when it runs out of ICStubs
> and need to safepoint to refill ICStubs, which with the fantastic
> safepoint coalescing optimization that we all know and love, can get
> fused into a GC safepoint, which will find the sweeper nmethod and be
> confused why it has not gone through an entry barrier before it yielded
> to the safepoint like everyone else.
>
> This causes some headache, and I would like to harmonize this better by
> simply calling the nmethod entry barrier on that nmethod in the sweeper,
> before yielding to the safepoint. Then there is no need to treat it as a
> special case.
>
> Bug:
> https://bugs.openjdk.java.net/browse/JDK-8234662
>
> Webrev:
> http://cr.openjdk.java.net/~eosterlund/8234662/webrev.00/
>
> Thanks.
> /Erik
More information about the hotspot-dev
mailing list