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

Jorn Vernee jvernee at openjdk.java.net
Wed May 27 16:09:14 UTC 2020


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 not 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.



Commit messages:
 - 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.00
  Stats: 1952 lines in 13 files changed: 1667 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