[foreign-memaccess] [Rev 01] RFR: Preserve memory scope for buffer segments
Maurizio Cimadamore
mcimadamore at openjdk.java.net
Thu Apr 16 16:05:13 UTC 2020
> Not 100% sure about this, but wanted to share this PR for evaluation. Basically, I've realized that we are also not
> preserving the memory scope of the original segment when we do a segment -> buffer -> segment transition.
> This means that, e.g. code like this:
>
> MemorySegment segment = MemorySegment.allocateNative(16);
> segment = MemorySegment.ofByteBuffer(segment.asByteBuffer());
> segment.close(); // no cleanup of native memory
>
> will not really 'close' the original segment. Similarly, if the original segment is being worked upon by some other
> thread (through a spliterator) it is possible for the morphed segment to lose this info, and to allow a close - if the
> scope is created afresh (as is now). This patch fixes this, but I'm torn as to whether it makes things better;
> preserving access modes and thread ownership is mostly about not allowing clients to use the byte buffer escape hatch
> as a way to defy the segment restrictions. I don't think preserving scope falls into the same bucket - e.g. this is a
> separate question as to whether a segment S2 obtained through S1 -> BB -> S2 is just a *view* of S1 (with same temporal
> bounds), or is just an independent segment, with new temporal bounds. I think both answers are legitimate, and it's
> mostly a question of making up our mind. My take is that inferring scope like this can be seen a bit too magic - and
> you are never sure of what happens when you do a MemorySegment::close, so perhaps what we have w/o this patch is
> preferrable. What do you think?
Maurizio Cimadamore has updated the pull request incrementally with one additional commit since the last revision:
Added test (contributed by Jorn Vernee)
-------------
Changes:
- all: https://git.openjdk.java.net/panama-foreign/pull/113/files
- new: https://git.openjdk.java.net/panama-foreign/pull/113/files/3a0eb293..eaeef40b
Webrevs:
- full: https://webrevs.openjdk.java.net/panama-foreign/113/webrev.01
- incr: https://webrevs.openjdk.java.net/panama-foreign/113/webrev.00-01
Stats: 10 lines in 1 file changed: 10 ins; 0 del; 0 mod
Patch: https://git.openjdk.java.net/panama-foreign/pull/113.diff
Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/113/head:pull/113
PR: https://git.openjdk.java.net/panama-foreign/pull/113
More information about the panama-dev
mailing list