RFR: 8340205: Native linker allows MemoryLayout consisting of only PaddindLayout
Jorn Vernee
jvernee at openjdk.org
Fri Sep 20 10:27:36 UTC 2024
On Tue, 17 Sep 2024 14:12:58 GMT, Per Minborg <pminborg at openjdk.org> wrote:
> This PR prevents sequence layout with padding to be used with the Linker.
src/java.base/share/classes/java/lang/foreign/Linker.java line 252:
> 250: * <li>the alignment constraint of {@code S} is set to its
> 251: * <a href="MemoryLayout.html#layout-align">natural alignment</a>, and</li>
> 252: * <li>{@code S.elementLayout()} is not a padding layout.</li>
I think the existing text already covers this case, so no addition should be needed. Padding layouts on their own are not supported layouts. (Note e.g. how for group layouts we say: 'each member layout ... is either a padding layout or a layout supported by {@code NL}'.
Though, either way we'll need a CSR for the behavior change.
test/jdk/java/foreign/TestLinker.java line 165:
> 163: FunctionDescriptor fd = FunctionDescriptor.of(struct, struct);
> 164: Linker linker = Linker.nativeLinker();
> 165: assertThrows(IllegalArgumentException.class, () -> linker.downcallHandle(fd));
Could you please verify the exception message here as well? (Since there are multiple IAEs possible)
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/21041#discussion_r1768366549
PR Review Comment: https://git.openjdk.org/jdk/pull/21041#discussion_r1768363927
More information about the core-libs-dev
mailing list