RFR: 8317545: AIX PPC64: Implementation of Foreign Function & Memory API [v4]
Jorn Vernee
jvernee at openjdk.org
Mon Oct 16 22:59:22 UTC 2023
On Mon, 16 Oct 2023 16:20:49 GMT, Martin Doerr <mdoerr at openjdk.org> wrote:
>> The AIX linker has a few minor diffs to the linux ABIv1 linker. In addition, double values have only 4 Byte alignment within structures. This PR is based on JDK22 version of the FFI.
>
> Martin Doerr has updated the pull request incrementally with one additional commit since the last revision:
>
> Revert changes to PlatformLayouts.java
src/java.base/share/classes/jdk/internal/foreign/abi/ppc64/aix/AixPPC64Linker.java line 64:
> 62: // Note: It is possible to enforce 8-byte alignment by #pragma align (natural)
> 63: // Therefore, we use normal checks if we are already 8-byte aligned.
> 64: if ((offset % 8 != 0) && (member instanceof ValueLayout vl && vl.carrier() == double.class)) {
I think you should check for the correct byte order as well at some point, for this special case
test/micro/org/openjdk/bench/java/lang/foreign/pointers/NativeType.java line 61:
> 59: @Override
> 60: public ValueLayout.OfInt layout() {
> 61: return (ValueLayout.OfInt) LINKER.canonicalLayouts().get("int");
For this benchmark, we rely on constant folding through these layouts. So, we shouldn't go through `canonicalLayouts` here. We can store the layout in a `static final` field, and then return it here instead.
test/micro/org/openjdk/bench/java/lang/foreign/pointers/NativeType.java line 68:
> 66: @Override
> 67: public ValueLayout.OfDouble layout() {
> 68: return (ValueLayout.OfDouble) LINKER.canonicalLayouts().get("double");
Same here
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/16179#discussion_r1361340368
PR Review Comment: https://git.openjdk.org/jdk/pull/16179#discussion_r1361338651
PR Review Comment: https://git.openjdk.org/jdk/pull/16179#discussion_r1361338681
More information about the hotspot-compiler-dev
mailing list