[foreign-memaccess] RFR: 8249879: Split MemorySegment and MemoryAddress [v2]
Maurizio Cimadamore
mcimadamore at openjdk.java.net
Thu Jul 23 18:17:47 UTC 2020
> This patch splits, as the title suggests, the memory segment abstraction from the memory address abstraction, as
> described in this email:
> https://mail.openjdk.java.net/pipermail/panama-dev/2020-July/009928.html
>
> Aside from the obvious updates to the two interfaces (and their implementation), this patch greatly simplifies the way
> memory access var handles are generated; instead of spinning them on the fly (see `MemoryAccessVarHandleGenerator`,
> which is now removed) now all var handles can be derived from a primitive from which takes a segment and a byte offset.
> This caused the removal of several methods in the `JavaLangInvokeAccess` interface. The new memory segment interface
> has some more methods to perform slicing - which can basically be used to give a new base to an existing segment and
> can therefore be used in a lot of cases as a replacement for `MemoryAddress::addOffset`. The memory address interface
> is simplified, and features an additional `segmentOffset` method, which returns the byte offset of an address relative
> to the given segment (this is similar to the old `MemorySegment::rebase` method, which is now removed). The
> `MemoryAccess` class needed a lot of tweaks in the various signatures, to take a segment instead of a base address. I
> tried to update the documentation as best as I could, but it's possible I missed some references to the old
> relationship between segment and addresses, please double check. Of course integrating this patch is gonna cause
> issues in foreign-abi and foreign-jextract, as these branches make (heavy) use of memory access var handles. I suspect
> that integration will trigger a merge failure, so we can fix followup issues as part of the merge process, so that we
> can guarantee that all the branches remain buildable.
Maurizio Cimadamore has updated the pull request incrementally with one additional commit since the last revision:
Address review comments from Henry
-------------
Changes:
- all: https://git.openjdk.java.net/panama-foreign/pull/260/files
- new: https://git.openjdk.java.net/panama-foreign/pull/260/files/cbe42504..1f25978f
Webrevs:
- full: https://webrevs.openjdk.java.net/panama-foreign/260/webrev.01
- incr: https://webrevs.openjdk.java.net/panama-foreign/260/webrev.00-01
Stats: 4 lines in 3 files changed: 1 ins; 0 del; 3 mod
Patch: https://git.openjdk.java.net/panama-foreign/pull/260.diff
Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/260/head:pull/260
PR: https://git.openjdk.java.net/panama-foreign/pull/260
More information about the panama-dev
mailing list