[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