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)

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

Commit messages:
 - add missing </ul> tag
 - Remove references to 32-bit difference in javadoc
 - Test fixes
 - Set alignment of JAVA_LONG and JAVA_DOUBLE to 8 bytes

Changes: https://git.openjdk.org/jdk/pull/18007/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=18007&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8326172
  Stats: 54 lines in 10 files changed: 18 ins; 18 del; 18 mod
  Patch: https://git.openjdk.org/jdk/pull/18007.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/18007/head:pull/18007

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

Reply via email to