RFR: 8364235: Fix for JDK-8361447 breaks the alignment requirements for GuardedMemory
David Holmes
dholmes at openjdk.org
Tue Jul 29 07:50:53 UTC 2025
On Tue, 29 Jul 2025 06:45:01 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:
>> The fix for [JDK-8361447](https://bugs.openjdk.org/browse/JDK-8361447) added a new field to the `GuardHeader`, not realizing that the size of the `GuardHeader` must be such that the address of the user-data has the strictest necessary alignment (16-byte).
>>
>> We need to add a padding field to restore the alignment.
>>
>> A static assert is added to check the alignment.
>>
>> Testing:
>> - tiers 1-3 (in progress)
>>
>> Thanks
>
> src/hotspot/share/memory/guardedMemory.hpp line 143:
>
>> 141: friend class GuardedMemory;
>> 142:
>> 143: void* padding; // Ensures 16-byte alignment
>
> I'm not sure how this does anything for alignment, other than perhaps because the ABI happens to make
> the desired alignment happen somehow.
>
> But why not use `alignas(16)` somewhere?
It ensures that the offset of the user-data ptr within the `GuardedMemory` object, places the user-data on a suitably aligned boundary.
I tried:
alignas(16) u_char* _base_addr;
but that did not work. Perhaps I am using it wrong?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/26524#discussion_r2238857847
More information about the hotspot-runtime-dev
mailing list