RFR: 8234662: Sweeper should keep current nmethod alive before yielding for ICStub refills
erik.osterlund at oracle.com
erik.osterlund at oracle.com
Tue Dec 3 13:16:11 UTC 2019
Hi Per,
Thanks for the review.
/Erik
On 12/3/19 2:15 PM, Per Liden wrote:
>
> On 11/22/19 4:03 PM, 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/
>
> Looks good to me.
>
> /Per
More information about the hotspot-dev
mailing list