[master] RFR: Relax array elements alignment [v8]
Thomas Stuefe
stuefe at openjdk.java.net
Wed Apr 27 16:55:18 UTC 2022
On Tue, 26 Apr 2022 17:32:29 GMT, Roman Kennke <rkennke at openjdk.org> wrote:
>> PR #40 eliminated the Klass* word. A whole class of objects would not benefit from it, though: array elements are aligned at 8-byte-boundaries, even for element types where this is not necessary (byte, bool, char, short, int, float, compressed-objs). This means that array elements would still start at byte#16, after 8 bytes header and 4 bytes length and another 4 bytes unused gap.
>>
>> This change improves the array element alignment and relaxes it such that elements can align at 4-byte boundaries.
>>
>> Note about C2 changes: the code that extracts the state field (either byte, int or long array) assumed that all arrays would be equal, and asks for header size of T_INT. This would give wrong offset for T_LONG arrays.
>>
>> I'm adding a test that checks correct array elements base offsets.
>>
>> Testing:
>> - [x] tier1 (x86_64)
>> - [x] tier1 (x86_32)
>> - [x] tier1 (aarch64)
>> - [x] tier2 (x86_64)
>> - [x] tier2 (x86_32)
>> - [x] tier2 (aarch64)
>> - [x] tier3 (x86_64)
>> - [x] tier3 (x86_32)
>> - [x] tier3 (aarch64)
>
> Roman Kennke has updated the pull request incrementally with one additional commit since the last revision:
>
> Fix Z array initialization: initialize at byte granularity instead of words
I looked through this again, good work. I could not find anything wrong beyond my first remark. Thanks for renaming the header size method, new name is much clearer.
-------------
Marked as reviewed by stuefe (Committer).
PR: https://git.openjdk.java.net/lilliput/pull/41
More information about the lilliput-dev
mailing list