RFR: 8139457: Relax alignment of array elements [v66]
Stefan Karlsson
stefank at openjdk.org
Thu Feb 22 12:49:06 UTC 2024
On Thu, 22 Feb 2024 11:49:34 GMT, Roman Kennke <rkennke at openjdk.org> wrote:
>> See [JDK-8139457](https://bugs.openjdk.org/browse/JDK-8139457) for details.
>>
>> Basically, when running with -XX:-UseCompressedClassPointers, arrays will have a gap between the length field and the first array element, because array elements will only start at word-aligned offsets. This is not necessary for smaller-than-word elements.
>>
>> Also, while it is not very important now, it will become very important with Lilliput, which eliminates the Klass field and would always put the length field at offset 8, and leave a gap between offset 12 and 16.
>>
>> Testing:
>> - [x] runtime/FieldLayout/ArrayBaseOffsets.java (x86_64, x86_32, aarch64, arm, riscv, s390)
>> - [x] bootcycle (x86_64, x86_32, aarch64, arm, riscv, s390)
>> - [x] tier1 (x86_64, x86_32, aarch64, riscv)
>> - [x] tier2 (x86_64, aarch64, riscv)
>> - [x] tier3 (x86_64, riscv)
>
> Roman Kennke has updated the pull request incrementally with one additional commit since the last revision:
>
> Move shim into initialize_header()
src/hotspot/cpu/x86/c1_MacroAssembler_x86.cpp line 195:
> 193: xorl(t1, t1);
> 194: movl(Address(obj, arrayOopDesc::length_offset_in_bytes() + BytesPerInt), t1);
> 195: }
There's two `arrayOopDesc::length_offset_in_bytes() + BytesPerInt` calculations in this block. Wouldn't it be better to use `base_offset` instead of the second calculation?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/11044#discussion_r1499189308
More information about the hotspot-dev
mailing list