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

Jorn Vernee jvernee at openjdk.java.net
Fri Oct 9 13:10:31 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

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

  Review Comments

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

Changes:
  - all: https://git.openjdk.java.net/panama-foreign/pull/375/files
  - new: https://git.openjdk.java.net/panama-foreign/pull/375/files/abcd4526..9ffebc00

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=375&range=01
 - incr: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=375&range=00-01

  Stats: 111 lines in 4 files changed: 64 ins; 25 del; 22 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