[foreign-abi] RFR: 8245988: Add a special VaList carrier

Maurizio Cimadamore mcimadamore at openjdk.java.net
Wed May 27 18:15:19 UTC 2020


On Wed, 27 May 2020 16:02:41 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:

> Hi,
> 
> This patch adds a special VaList carrier to CSupport that can be used by C linker implementations to pass `va_list`
> arguments to upcalls and downcalls.
> Currently Windows VaList and SysV VaLists are implemented, but AArach64 not yet.
> 
> The API for the Reader and Builder might be a bit strange; the limitation to int, long, and double comes from the
> standard argument promotions that are done in C when calling a variadic function. Since we do not know how to promote
> any arbitrary value, at least for now the API restricts itself to accepting only types that would not be promoted in C,
> leaving any needed conversion up to the user.  For reviewers; I moved CallArranger.TypeClass + classification code to
> the top level, since it is now shared with the VaList implementations, so that's where the CallArranger diff comes
> from.  Thanks, Jorn

Great work.

Didn't read through all the changes - but I have a question on the API - why did you opted for a separate Reader
abstraction? Seems like VaList is already stateful anyway (since it can be closed), why not dropping all the reader
methods directly into VaList?

Also (but can be done later) - we need va_copy too.

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

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


More information about the panama-dev mailing list