[foreign] RFC 8219042: Cross-header layout resolution does not work

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Fri Feb 15 17:11:48 UTC 2019


Here's what I have in mind:

https://cr.openjdk.java.net/~mcimadamore/panama/8219042_v2/

Essentially, I've introduced a new attribute in the @NativeHeader, 
@NativeStruct and @NativeCallback annotations. The attribute is called 
'resolutionContext' and points to an optional j.l.Class array. If left 
empty, the resolution context for C is assumed to be the outermost class 
in which C is defined.

If non-empty, the default resolution context will be augmented to also 
look inside the classes specified in the attribute (and all classes 
nested in them).

I think it is a very clean approach, which does not intrude too much (no 
test was impacted, except for the clang/FFI test, which actually had a 
true cross-header reference - from Index.h to CXString.h).

No new annotations, more efficient (no more full method signature scans) 
and deterministic model, which scales to custom defined bound 
interfaces, too.

I think this looks like a winner?

If looks good, I can go ahead, add a test and file a RFR.

Maurizio

On 15/02/2019 15:47, Maurizio Cimadamore wrote:
> As for (2), I think there are many intermediate steps we could take - 
> for instance, instead of explicit name -> class mapping, we could 
> simply define a list of 'friends' toplevel classes the resolver has to 
> scan.
>
> So, if you are in header A and you refer to something in header B, you 
> can say @Friend(B.class), for example.


More information about the panama-dev mailing list