On Wed, 3 May 2023 14:26:03 GMT, Jorn Vernee <jver...@openjdk.org> wrote:

> > Actually, now that I look at it, it seems that the exception we raise is 
> > not correct. I think we need to throw if the element size is not a multiple 
> > of the alignment. That is, the size determines the stride, so that has to 
> > be a multiple of the alignment, otherwise it won't work.
> 
> Hmm, I guess the current check/assertion doesn't work out if we have an 
> element layout which has a size that is not a multiple of its alignment 
> constraint (i.e. it lacks trailing padding). For instance a struct of size 
> 12, with alignment 8. The second element of a sequence with that struct 
> layout would not be aligned.
> 
> I think we went back-and-forth on the need to enforce trailing padding in the 
> `structLayout` factory a few times.

I think the rationale is: we can't enforce, in general, that a layout size is a 
multiple of its alignment. Because, for instance, we might want to construct 
"hyper-aligned" layouts (e.g. a struct layout aligned at page boundary. That's 
fine.

But I think when you use a layout as a sequence element, then we should check 
that the thing makes sense - e.g. that the element layout has a size that is 
indeed a multiple of the alignment. Otherwise it just seems like a "bad" 
sequence.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/13770#issuecomment-1533182343

Reply via email to