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.

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

Commit messages:
 - Add more comprehensive javadoc
 - Initial push

Changes: https://git.openjdk.org/jdk/pull/14007/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=14007&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8308248
  Stats: 42 lines in 3 files changed: 16 ins; 6 del; 20 mod
  Patch: https://git.openjdk.org/jdk/pull/14007.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/14007/head:pull/14007

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

Reply via email to