On Tue, 15 Nov 2022 15:22:07 GMT, Maurizio Cimadamore <mcimadam...@openjdk.org> wrote:
>> src/java.base/share/classes/java/lang/foreign/Arena.java line 89: >> >>> 87: >>> 88: /** >>> 89: * Returns a native memory segment with the given size (in bytes) >>> and alignment constraint (in bytes). >> >> It is noted that the current documentation does not require a **new** native >> memory segment to be returned. Would it not be better with: >> >> Creates a new native memory segment ... >> >> The new shared segment might share actual backing memory though. > > My feeling is that being overly precise over identity might backfire. It is > not important whether the segment is a new instance or not. But there is, > perhaps, another invariant that is more semantically relevant: e.g. the > returned segments (whether new or not, we don't care) should be backed by > "disjoint" regions of memory. That is, if the method returns a segment with > address `0` and size `100`, calling the method again cannot return a segment > whose address is `50` and size is `100`. In principle, the segment allocator > interface allows for this (see `SegmentAllocator::prefixAllocator`) - but for > an arena, a behavior such as this would be indesirable, IMHO. I will add: Furthermore, for any two segments S1, S2 returned by this method, the following invariant must hold: S1.overlappingSlice(S2).isEmpty() == true ``` ------------- PR: https://git.openjdk.org/jdk/pull/10872