RFR: 8139457: Array bases are aligned at HeapWord granularity [v31]

Roman Kennke rkennke at openjdk.org
Sun May 7 18:52:33 UTC 2023


On Sun, 7 May 2023 18:14:13 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:
> 
>   Simplify aarch64 code

Let's get back to this (in support of compact object headers).
I have merged latest JDK master and resolve the merge conflict, and I have also simplified the C1 code in x86 and aarch64 by clearing the alignment gap in initialize_header() (same place where the klass_gap is cleared for instances), so that the rest of the init code can do word-aligned clearing.

@tstuefe @stefank @coleenp @shipilev may I ask for another round of reviews?

-------------

PR Comment: https://git.openjdk.org/jdk/pull/11044#issuecomment-1537515653


More information about the hotspot-dev mailing list