On Thu, 18 May 2023 09:33:00 GMT, Maurizio Cimadamore <mcimadam...@openjdk.org> wrote:
>> The FFM API exposes layout constants for Java primitives. Among those there >> are constants for `JAVA_LONG` and `JAVA_DOUBLE`. Currently, the alignment of >> these layouts is set the same as their size (e.g. 8 bytes). >> >> This is obviously correct on 64-bit platforms, but on 32-bit platform it is >> not, as such platforms cannot guarantee that doubles and longs will be >> always 64-bit aligned. This will also result in problems when trying to use >> e.g. `JAVA_DOUBLE` to model a C double for the linker API on 32-bit >> platforms. >> >> For these reasons, it would be preferable to define the alignment of >> `JAVA_LONG` and `JAVA_DOUBLE` constants as `ADDRESS.byteSize()`. >> >> This patch rectifies alignment of those layout constants to reflect >> platform-dependent constraints. It also fixes the maximum alignment >> constraint supported by heap segments, so that it is 4 for long[] and >> double[] on 32-bit platforms. > > Maurizio Cimadamore has updated the pull request incrementally with one > additional commit since the last revision: > > Address review comments > Actually tweak alignment of ValueLayout.OfLong/ValueLayout.OfDouble Does it make sense to add two test classes, each running on a 64/32-bit platform that verifies the two alignment variants? ------------- PR Comment: https://git.openjdk.org/jdk/pull/14007#issuecomment-1552828503