On Mon, 23 Sep 2024 09:54:55 GMT, Per Minborg <pminb...@openjdk.org> wrote:
>> This PR prevents sequence layout with padding to be used with the Linker. > > Per Minborg has updated the pull request with a new target base due to a > merge or a rebase. The incremental webrev excludes the unrelated changes > brought in by the merge/rebase. The pull request contains nine additional > commits since the last revision: > > - Add specific message for group layouts with only padding layouts > - Merge branch 'master' into linker-padding-layout-only > - Check exception message > - Remove redundant doc section > - Merge branch 'master' into linker-padding-layout-only > - Improve excception message > - Document a sequence layout cannot contain a padding layout > - Update copyright year > - Prevent embeded only padding layout in linker src/java.base/share/classes/jdk/internal/foreign/abi/AbstractLinker.java line 225: > 223: // check elements are not all padding layouts and for trailing > padding > 224: private void checkGroup(GroupLayout gl, long maxUnpaddedOffset) { > 225: if (gl.memberLayouts().stream().allMatch(e -> e instanceof > PaddingLayout)) { I'm not 100% sure that this check (which I agree with) can be desumed from the current `Linker` javadoc. E.g. if I have: `groupLayout(paddingLayout(1))` The Linker says: * there cannot be any intermediate padding more than necessary to align non-padding elements. But there's no non-padding elements here, so <shrug> :-) * there cannot be more padding at the end, more than necessary to make the group size a multiple of its alignment - but again, since there's no non-padding layout, it is not clear what this means here. We have a padding of 1, which makes the group have size 1, which is a multiple of the alignment of the struct. So, ok? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/21041#discussion_r1771130016