On Mon, 23 Sep 2024 09:54:55 GMT, Per Minborg <[email protected]> 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