[foreign-memaccess+abi] RFR: 8305087: MemoryLayout API checks should be more eager [v3]

Jorn Vernee jvernee at openjdk.org
Fri Mar 31 15:21:37 UTC 2023


On Thu, 30 Mar 2023 10:55:32 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:

>> This patch adds eager check on construction of sequence and group layouts. More specifically:
>> 
>> * sequenceLayout(L) is well-formed iff L.bitAlignment() <= L.bitSize()
>> * groupLayout(L1, … Ln) is well-formed iff for-each 1..n, offset(Li) % Li.bitAlignment() == 0
>> 
>> Moreover, this patch also validates the alignment parameter to calls of `MemoryLayout::withBitAlignment` on sequence and group layouts:
>> 
>> * sequenceLayout(L).withBitAlignment(a) is well-formed iff L.bitAlignment() <= a
>> * groupLayout(L1, ..., Ln).withBitAlignment(a) is well-formed iff max(L1.bitAlignment(), ...,  Ln.bitAlignment()) <= a
>> 
>> These checks prevent bad layouts from being constructed (either with factories, or with bad calls to `withBitAlignment`), w/o restricting the expressiveness of the memory layout API.
>> Moreover, since all layouts are now well-formed by construction, we no longer need lazy checks when creating a deferefence var handle.
>
> Maurizio Cimadamore has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - Drop spurious import
>  - Simplify struct/union layout code

Marked as reviewed by jvernee (Committer).

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

PR Review: https://git.openjdk.org/panama-foreign/pull/824#pullrequestreview-1367144498


More information about the panama-dev mailing list