On Tue, 16 May 2023 11:18:09 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.

This pull request has now been integrated.

Changeset: 44218b1c
Author:    Maurizio Cimadamore <mcimadam...@openjdk.org>
URL:       
https://git.openjdk.org/jdk/commit/44218b1c9e5daa33557aac9336251cf8398d81eb
Stats:     68 lines in 6 files changed: 29 ins; 6 del; 33 mod

8308248: Revisit alignment of layout constants on 32-bit platforms

Reviewed-by: psandoz, pminborg

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

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

Reply via email to