[foreign-memaccess+abi] RFR: 8302346: Lift upcall sharing mechanism to AbstractLinker

Jorn Vernee jvernee at openjdk.org
Tue Feb 14 14:56:04 UTC 2023


Lift the upcall sharing mechanism to AbstractLinker, where it can live next to the similar mechanism for down calls. This also allows the fallback linker to use this mechanism.

Instead of an upcall stub, AbstractLinker::arrangeDowncall now return an UpcallStubFactory, which is a callback accepting a target MethodHandle and Arena, which are then used to construct the actual upcall stub.

Perhaps the trickiest part of this patch is that we have to simulate the effects of `SharedUtils::adaptUpcallForIMR` on the target method type. I've added a new method in SharedUtils, called `computeUpcallIMRType` for that, which mimics the shape of the `adaptUpcallForIMR` method.

Since the shape of most of the arrangeUpcall methods was very similar, I factored them out into a helper method in SharedUtils as well.

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

Commit messages:
 - fix zero
 - tweak visibility
 - polish3
 - polish2
 - polish
 - Make upcall creation lazy at the AbstractLinker level

Changes: https://git.openjdk.org/panama-foreign/pull/791/files
 Webrev: https://webrevs.openjdk.org/?repo=panama-foreign&pr=791&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8302346
  Stats: 194 lines in 16 files changed: 77 ins; 55 del; 62 mod
  Patch: https://git.openjdk.org/panama-foreign/pull/791.diff
  Fetch: git fetch https://git.openjdk.org/panama-foreign pull/791/head:pull/791

PR: https://git.openjdk.org/panama-foreign/pull/791


More information about the panama-dev mailing list