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

Reply via email to