RFR: 8331341: secondary_super_cache does not scale well: C1 and interpreter
Andrew Haley
aph at openjdk.org
Thu Jul 18 16:39:33 UTC 2024
On Thu, 11 Jul 2024 23:22:19 GMT, Vladimir Ivanov <vlivanov at openjdk.org> wrote:
>> src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp line 1433:
>>
>>> 1431:
>>> 1432: // Don't check secondary_super_cache
>>> 1433: if (super_check_offset.is_register()
>>
>> Do you see any effects from this particular change?
>>
>> It adds a runtime check on the fast path for all subtype checks (irrespective of whether it checks primary or secondary super). Moreover, the very same check is performed after primary super slot is checked.
>>
>> Unless `_secondary_super_cache` field is removed, unconditionally checking the slot at `super_check_offset` is benign.
>
> BTW `MacroAssembler::check_klass_subtype_fast_path` deserves a cleanup: `super_check_offset` can be safely turned into `Register` thus eliminating the code guarded by `super_check_offset.is_register() == false`.
> Do you see any effects from this particular change?
>
> It adds a runtime check on the fast path for all subtype checks (irrespective of whether it checks primary or secondary super). Moreover, the very same check is performed after primary super slot is checked.
OK. I think this was more for testing, but you make sense.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/19989#discussion_r1683178664
More information about the core-libs-dev
mailing list