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

Jorn Vernee jvernee at openjdk.java.net
Thu Jun 4 10:15:00 UTC 2020


> 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

Jorn Vernee has updated the pull request with a new target base due to a merge or a rebase. The pull request now
contains six commits:

 - Add VaList benchmarks
 - Finished testing VaList and added MemoryAddress <-> VaList converters
 - - Added testing of structs passed on the stack.
   - Added documentation.
 - Merge Reader and VaList interfaces
 - Copy by-value structs to maintain semantics
 - Add support for a special VaList carrier to upcalls and downcalls

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

Changes: https://git.openjdk.java.net/panama-foreign/pull/184/files
 Webrev: https://webrevs.openjdk.java.net/panama-foreign/184/webrev.01
  Stats: 2287 lines in 15 files changed: 2002 ins; 270 del; 15 mod
  Patch: https://git.openjdk.java.net/panama-foreign/pull/184.diff
  Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/184/head:pull/184

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


More information about the panama-dev mailing list