[foreign-memaccess+abi] RFR: 8255903: Enable multi-register return values for native invokers [v6]

Jorn Vernee jvernee at openjdk.java.net
Fri Oct 29 13:22:04 UTC 2021


> Hi,
> 
> This patch implements support for multi-register returns in native invokers, and removes the buffered invocation strategy for downcalls. This is achieved, essentially, by using an in memory return: the caller allocates a bit of memory, and the native invoker stub writes the values of the return register to that memory. Then, the post processing code reads the register values back from there.
> 
> Currently, the target address of a downcall is handled separately from the other arguments. I initially implemented passing the IMR address the same way, but I realized the removal of the buffered invocation strategy affords us a better way of doing things: we can just make the target address and the IMR address part of the normal calling sequence, and remove a bunch of special-casing code to handle these. We now just use a binding recipe to unbox these arguments and shuffle them into registers, and the ABIDescriptor tells the native invoker stub which registers to pick up these arguments from.
> 
> Thanks,
> Jorn

Jorn Vernee has updated the pull request incrementally with one additional commit since the last revision:

  Rename one more instance of isImr that was missed

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

Changes:
  - all: https://git.openjdk.java.net/panama-foreign/pull/603/files
  - new: https://git.openjdk.java.net/panama-foreign/pull/603/files/bbfabf73..34f3ebdb

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=603&range=05
 - incr: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=603&range=04-05

  Stats: 6 lines in 1 file changed: 0 ins; 0 del; 6 mod
  Patch: https://git.openjdk.java.net/panama-foreign/pull/603.diff
  Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/603/head:pull/603

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


More information about the panama-dev mailing list