On Mon, 16 Sep 2024 06:53:42 GMT, Roberto Castañeda Lozano
<[email protected]> wrote:
>> Roman Kennke has updated the pull request incrementally with one additional
>> commit since the last revision:
>>
>> Various touch-ups
>
> src/hotspot/cpu/aarch64/c2_MacroAssembler_aarch64.cpp line 2576:
>
>> 2574: } else {
>> 2575: lea(dst, Address(obj, index, Address::lsl(scale)));
>> 2576: ldr(dst, Address(dst, offset));
>
> Do you have a reproducer (or, better yet, a test case) that exercises this
> case? I ran Oracle's internal CI tiers 1-5 and could never hit it. Could this
> happen for x64 as well?
AFAIK, this happens only when using compressed oops with a heap-base in r27.
When running with that setting, we would get addresses like r27[nklass] or
r27[nklass]+offset, both with scale=8. You would need large heaps, perhaps
>4GB, to get this coops setting. The problem with aarch64 is that we can't have
an address like r27[nklass]+offset, that's why we need to lea the r27[nklass]
part first.
Yes, this also happens on x86, but x86 supports rX[nklass]+offset addressing.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20677#discussion_r1764937842