RFR: 8305895: Implement JEP 450: Compact Object Headers (Experimental) [v15]

Roman Kennke rkennke at openjdk.org
Wed Sep 18 12:11:31 UTC 2024


On Mon, 16 Sep 2024 06:53:42 GMT, Roberto Castañeda Lozano <rcastanedalo at openjdk.org> 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


More information about the build-dev mailing list