[foreign-abi] RFR: 8254260: Consider splitting binding recipe operators that serve a dual role

Jorn Vernee jvernee at openjdk.java.net
Thu Oct 8 19:17:30 UTC 2020


Hi,

This patch splits the binding recipe operators that currently serve a dual purpose into 2 operators each:
- MOVE -> VM_STORE and VM_LOAD
- DEREFERENCE -> BUFFER_STORE and BUFFER_LOAD
- CONVERT_ADDRESS -> BOX_ADDRESS and UNBOX_ADDRESS

Note that I also added a TO_SEGMENT operator which converts a MemoryAddress into a MemorySegment. This was previously
done as part of the COPY operator, but only for upcalls, so I had to split out this functionality so that COPY could
have only one interpretation as well. This will also enable some more optimizations down the line, such as merely
wrapping a by-value struct passed as a pointer in a MemorySegment, instead of having to make a copy.

This also regularized the use of allocators by the operators. Now an allocator is always passed as an argument, and
that's what is used to do allocations, instead of relying implicitly on MemorySegment::allocateNative. (The index of
the allocator argument is now also always passed when specializing an operator, to indicate the dependency, and so that
operator impls don't have to 'guess' which argument index is the allocator (see for instance the implementation of
Copy::specialize).

The rest of the patch is more or less a mechanical renaming, and updating the tests/CallArrangers to use the different
operator names.

Thanks,
Jorn

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

Commit messages:
 - - Split Move operator into VMStore and VMLoad

Changes: https://git.openjdk.java.net/panama-foreign/pull/375/files
 Webrev: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=375&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8254260
  Stats: 882 lines in 14 files changed: 261 ins; 152 del; 469 mod
  Patch: https://git.openjdk.java.net/panama-foreign/pull/375.diff
  Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/375/head:pull/375

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


More information about the panama-dev mailing list