[foreign-memaccess] RFR 8223768: Rethink relationship between Sequence vs. Group layouts

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Mon May 13 12:14:47 UTC 2019


Hi,
as discussed previously, the relationship between sequences and groups 
is a bit shaky, as there are sequences that cannot be expressed as 
groups (sequences whose size is unbound).

This patch models groups and sequences independently:

* they all have a (minimal) common supertype called Compound (which 
supports only a Stream<Layout> elements() method)

* Group implements Iterable, always has a size, and you can access 
elements by index

* Sequence doesn't implement Iterable, has an optional size, and has an 
accessor to retrieve the element layout (there's only one of them, 
regardless of the size)

I think this is much saner.

Webrev:

http://cr.openjdk.java.net/~mcimadamore/panama/8223768/

P.S.
of course Compound should be renamed to CompoundLayout in a later webrev 
(as for all other layout names).

P.P.S.
in a separate patch I'll explore generalizing this method:

LayoutPath::groupElement(long index)

with this:

LayoutPath::compoundElement(long index)

Since now we should be able to implement indexed access on both group 
and sequences.

Maurizio




More information about the panama-dev mailing list