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

Stefan Karlsson stefank at openjdk.org
Thu Dec 15 14:03:10 UTC 2022


On Thu, 15 Dec 2022 13:20:37 GMT, Roman Kennke <rkennke at openjdk.org> wrote:

>> src/hotspot/share/gc/z/zObjArrayAllocator.cpp line 55:
>> 
>>> 53:   const size_t header = arrayOopDesc::base_offset_in_bytes(element_type);
>>> 54:   size_t byte_size = _word_size * BytesPerWord;
>>> 55:   const size_t payload_size = byte_size - header;
>> 
>> Generational ZGC needs it to be able to write colored NULLs in object arrays, so a byte-centric approach will not work for us. Could you rewrite the code to take care of the "unaligned" 32 bits at the start of the array, and leave the word-centric segmented-clearing loop intact?
>
> Right. I restored the previous code and align-up the base offset. Object arrays in ZGC would not use the leading unaligned 32bits anyway, afaik.

Note that even though the classes are named ObjArrayAllocator, this path is used for primitive arrays as well. I've wanted to change the name, but haven't gotten to it yet.

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

PR: https://git.openjdk.org/jdk/pull/11044


More information about the hotspot-dev mailing list