RFR: 8238226: Revisit FunctionDescriptor

Maurizio Cimadamore mcimadamore at openjdk.java.net
Tue Feb 11 15:03:35 UTC 2020


On Tue, 11 Feb 2020 12:50:46 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:

> Continuation of: https://mail.openjdk.java.net/pipermail/panama-dev/2020-February/007418.html
> 
>> Hi,
>> 
>> Please review the following patch that revisits FunctionDescriptor: 1. 
>> Adds appendArgumentLayouts, and changeReturnLayout combinator methods. 
>> 2. Removes the variadic flag. This flag was not really being used in 
>> practice, since we can not link variadic functions directly any ways. 
>> Using the new appendArgumentLayouts method we can 'specialize' a base FD 
>> with different argument layouts representing vararg arguments. I think 
>> if a similar flag is needed in the future, we should consider adding 
>> annotations to FunctionDescriptor, and making it an annotation instead, 
>> but currently it doesn't seem like it's pulling it's weight by being in 
>> the API.
>> 
>> Webrev: 
>> http://cr.openjdk.java.net/~jvernee/panama/webrevs/cleanup_fd/webrev.00/
>> Bugs: https://bugs.openjdk.java.net/browse/JDK-8238226, 
>> https://bugs.openjdk.java.net/browse/JDK-8237580
>> 
>> Again, this patch applies on top of the Binding cleanup patch.
>> 
>> Thanks,
>> Jorn

Looks good - apart from a minor nit; also please sync up with Sundar w.r.t. foreign-jextract changes.

test/jdk/java/foreign/StdLibTest.java line 356:

> 355:             MethodHandle mh = abi.downcallHandle(printfAddr, mt,
> 356:                     FunctionDescriptor.of(C_INT, argLayouts.toArray(new MemoryLayout[0])));
> 357:             return mh.asSpreader(1, Object[].class, args.size());

It feels like we should be able to simplify this routine with the new FunctionDescriptor::append ?

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



PR: https://git.openjdk.java.net/panama-foreign/pull/15


More information about the panama-dev mailing list