On Mon, 26 Feb 2024 16:05:51 GMT, Jorn Vernee <jver...@openjdk.org> wrote:
>> This patch changes the alignment for `JAVA_LONG` and `JAVA_DOUBLE` to 8, >> regardless of the underlying platform. This means that atomic access modes >> work on memory segments wrapping `long[]` or `double[]`, as they already do >> when using `MethodHandless::arrayAccessVarHandle`. >> >> After discussion, we came to the conclusion that it is reasonable for the >> JDK to require the elements of a `long[]` and `double[]` to be 8 byte >> aligned. It is ultimately up to the JDK to set these requirements, which are >> for the VM to implement. >> >> I was seeing a stack overflow when running >> test/jdk/java/foreign/stackwalk/TestReentrantUpcalls.java on x86, so I've >> lowered the recursion to 50 (which is still more than enough I think). >> >> Testing: `jdk_foreign` on x64 Windows, x64 Windows + fallback linker, and >> x86 Linux (uses fallback linker) > > Jorn Vernee has updated the pull request incrementally with one additional > commit since the last revision: > > review comments test/jdk/java/foreign/TestLayouts.java line 164: > 162: ); > 163: assertEquals(struct.byteSize(), 1 + 1 + 2 + 4 + 8); > 164: assertEquals(struct.byteAlignment(), 8); Looking at this PR: https://github.com/openjdk/jdk/pull/18007 This test seemed to cover more case before that PR - e.g. a layout generator was tweaked to exclude long/doubles. I believe revert the test changes now? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/18007#discussion_r1502938943