[foreign-abi] RFR: Revisit FunctionDescriptor
Jorn Vernee
jorn.vernee at oracle.com
Tue Feb 4 10:14:58 UTC 2020
Ah, I missed the use in RuntimeHelper. That seems to be the only real
use case.
Wrt using annotations instead, I guess what I'm saying is; I don't see
that much value in being able to attach this single bit of information
to a FunctionDescriptor, but I see more value in being able to attach
any kind of information to a FunctionDescriptor. Since the ABI machinery
doesn't use it either, the variadic flag seems like an arbitrary
appendage. Something like that feels more at home as an annotation (a
mechanism for arbitrary appendages).
Though, my main gripe is with having to read (and write) the extra
boolean argument all the time when a FunctionDescriptor is created, even
though this extra visual information is rarely relevant (and indeed, it
is irrelevant if you're reading just foreign-abi code). That's the main
thing I'd like to remove. Since the flag is currently being used, I'd
suggest replacing the boolean flag passed to the factory with an
asVariadic() method.
New webrev:
http://cr.openjdk.java.net/~jvernee/panama/webrevs/cleanup_fd/webrev.01/
Thoughts?
Jorn
On 03/02/2020 19:10, Maurizio Cimadamore wrote:
> (without having looked at the code) - jextract runtime support is
> currently using the varargs info to generate varargs MethodHandle
> which do the specialization. As you say, we can tackle that problem
> with annotations, although I'm not sure of what's the net gain in
> moving things around. At this point I guess I'd prefer jextract to not
> generate any magic annotation - the Declaration.Function class knows
> whether a function is a varargs or not, so there's no need to truck
> that info into the runtime.
>
> Maurizio
>
> On 03/02/2020 16:19, Jorn Vernee wrote:
>> 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
>>
More information about the panama-dev
mailing list