[foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v14]
Maurizio Cimadamore
mcimadamore at openjdk.java.net
Thu Sep 16 16:38:30 UTC 2021
On Tue, 10 Aug 2021 09:32:09 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:
>> This patch ties up some loose ends with the MemoryCopy API, and it also prepares the ground for some other related refactorings in this area.
>>
>> The meat of this patch is represented by the various changes in MemoryCopy, where all methods were renamed to simply `copy`, and the length parameter (now called `elementCount`) is always moved to the end.
>>
>> I've also simplified naming of parameters, as I think distinguishing between `index` and `offset` is enough (e.g. an array has an index, a segment has an offset).
>>
>> You will see that, at the very end of the class, three more copy methods have been added, which deal fully in terms of segments. I have also moved the complex layout-based memory segment copy operation (which does the swap) as a static method in this class, as I believe the static form makes the method more regular and usable.
>>
>> I've made some changes to our uses of `copyFrom` in the linker, to use the new methods in `MemoryCopy` when the copy operation was performing slicing in the source/target segment, which I think makes the code more readable. Of course these changes are completely optional and could be omitted as well.
>
> Maurizio Cimadamore has updated the pull request incrementally with two additional commits since the last revision:
>
> - Tweak micro benchmarks
> - Improve performance of generic copy methods
I will close this PR. Some of the issues discussed here have resulted in a much bigger API restructuring which is described here:
https://mail.openjdk.java.net/pipermail/panama-dev/2021-September/014946.html
Among the changes described in the writeup linked in the above email, there is a proposal which makes the segment dereference API much tighter and integrated with the rest of the MemorySegment and MemoryLayout APIs. We believe that API is the way forward, and that `MemoryAccess` and `MemoryCopy` were, in the end, (useful) intermediate steps along the way.
-------------
PR: https://git.openjdk.java.net/panama-foreign/pull/568
More information about the panama-dev
mailing list