[foreign] RFR: replace internal nicl types with layout API

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Wed May 9 20:34:54 UTC 2018


Hi,
this patch removes the layout classes from jdk/internal/nicl/types and 
rewires the binder to use the public Layout API.

The patch is mostly straightforward, but its size is daunting - here are 
the major changes involved:

* references to internal types have been replaced with references to the 
layout API, more specifically:

types.Array -> layout.Sequence
types.Pointer -> layout.Address
types.Function -> layout.Function
types.Bitfield -> layout.Value
types.Scalar -> layout.Scalar
types.Container -> layout.Group

* Since Function is not a layout, there's no common root type between 
Function and Layout, meaning that some parser routines 
(DescriptorParser) and some utility functions (Util) had to be rewritten 
to take the split into account.

* DescriptorParser is still based on the old description language (to be 
replaced), but it creates Layout instances now

* Since Layout::bitsSize returns sizes in bits, I had to divide 
everything by 8, esp. in the logic for computing calling sequence recipe

* All test pass, but one DescriptorTest has been ignored; the reason is 
that this test relies heavily on the layout description of layouts, and 
on the assumption that there's a 1-1 mapping between such description 
and the output of the toString method. Since we're in a transitional 
phase where we are going to move to a new layout description soon, 
there's no point in converting this test - just to convert it again in 
few weeks.

The webrev is here:

http://cr.openjdk.java.net/~mcimadamore/panama/binder%2blayout/

Comments welcome.

Cheers
Maurizio




More information about the panama-dev mailing list