RFR: 8326172: Dubious claim on long[]/double[] alignment in MemorySegment javadoc
Jorn Vernee
jvernee at openjdk.org
Mon Feb 26 14:27:15 UTC 2024
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
More information about the core-libs-dev
mailing list