[foreign] RFC: unify function and layout

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Fri Nov 23 18:21:04 UTC 2018


Hi,
I've put together a patch which unifies both Layout and Function under a 
common root type, called Descriptor:

http://cr.openjdk.java.net/~mcimadamore/panama/layout%2bfunc_v2/

The reason why I explored this direction is that there are few points 
where we need some commonality between layouts and functions; for 
instance, we have already discussed how function descriptors will need 
to support some form of annotation (in the style of layout annotations); 
this is needed both by the new annotation format under discussion in [1] 
but also if we are to give 'names' to callbacks, so that we can refer to 
function descriptors 'by name' (this is useful in cases like qsort).

Another pain point is that the Address layout currently pays the biggest 
price for the lack of such common abstraction: a pointer can either 
point to a memory location (object in C lingo) or to a function. If we 
unify these two, then all Address layouts point to an (optional, because 
of void) descriptor, and the API can be simplified (a lot, in fact).

There's also some hiccups around parsing declaration in @NativeHeader, 
although this is transitory and will go away if we switch to a different 
annotation scheme.

Overall, after playing with it, I believe this patch significantly 
improves the API, w/o adding significant complexity/surface area.

Comments?

Cheers
Maurizio

[1] - 
http://mail.openjdk.java.net/pipermail/panama-dev/2018-November/003220.html





More information about the panama-dev mailing list