RFR: 8219101: Stop using ICStubs for CompiledIC transitions to clean
Erik Österlund
erik.osterlund at oracle.com
Mon Feb 18 15:22:30 UTC 2019
Hi Per,
Thanks for the partial review!
/Erik
On 2019-02-18 15:40, Per Liden wrote:
> On 02/18/2019 01:01 PM, Erik Österlund wrote:
>> Hi,
>>
>> When transitioning CompiledICs to clean, we sometimes need to use
>> transitional states (using JIT-compiled ICStubs).
>> The trick is that today when we clean ICs, we atomically and
>> logically write NULL to the data section, and set the destination to
>> some resolve stub. In reality, the NULL gets translated to
>> Universe::non_oop_word. But the point is that in order to set both
>> data and destination atomically, we use an ICStub.
>>
>> ...but we don't need to set them both.
>>
>> When the inline cache is cleaned, the data part is no longer
>> relevant, and could really be set to any nonsense value, as long as
>> subsequent transitions away from that cleaned inline cache
>> (monomorphic/interpreted) uses a transitional state to do so.
>> I suspect that at some point in time, when inline caches pointed at
>> oops in perm gen or something, it was crucial that the data part of
>> the inline cache made sense to the GC. This is not the case today,
>> and we can just ignore the value pretending it doesn't exist instead.
>>
>> The benefit with deferring the use of transitional state to when
>> someone performs a subsequent transition away from clean
>> (set_to_monomorphic), is that all code paths where cleaning inline
>> caches fail can be removed. This in particular simplifies the sweeper
>> and ZGC nmethod unloading code, that needs to handle failures in
>> inline cache cleaning due to running out of ICStubs forcing us to
>> trigger safepoints to refill IC stubs. It should also reduce the
>> overall number of safepoints due to running out of ICStubs.
>>
>> Bug:
>> https://bugs.openjdk.java.net/browse/JDK-8219101
>>
>> Webrev:
>> http://cr.openjdk.java.net/~eosterlund/8219101/webrev.00/
>
> Not a complete review, but the ZGC change looks awesome ;)
>
> /Per
>
>>
>> Testing: mach5 hs-tier1-5.
>>
>> Thanks,
>> /Erik
More information about the hotspot-dev
mailing list