RFR: 8317819: Scope should reflect lifetime of underying resource (mainline) [v2]
Jorn Vernee
jvernee at openjdk.org
Fri Oct 13 16:52:11 UTC 2023
On Fri, 13 Oct 2023 15:39:06 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:
>> This PR is based on a port of: openjdk/panama-foreign#898
>>
>> Some additional changes are contained in this PR:
>>
>> * instead of using a different "always alive" scope for zero-length memory segments, we now use the global scope
>> * the javadoc for `MemorySegment::ofArray`, `MemorySegment::ofBuffer` and `SymbolLookup::loaderLookup` is tweaked to say that the scope associated to the returned segments is an automatic scope
>> * the javadoc for `MemorySegment.Scope` defines the concepts of global and automatic scope, which are then referenced in the `Arena` javadoc.
>
> Maurizio Cimadamore has updated the pull request incrementally with one additional commit since the last revision:
>
> Add test
Marked as reviewed by jvernee (Reviewer).
src/java.base/share/classes/java/lang/foreign/Arena.java line 47:
> 45: * The simplest arena is the {@linkplain Arena#global() global arena}. The global arena
> 46: * features an <em>unbounded lifetime</em>. The scope of the global arena is the global scope.
> 47: * As such, native segments allocated with the global arena are associated are always accessible and their backing regions
Typo?
Suggestion:
* As such, native segments allocated with the global arena are always accessible and their backing regions
src/java.base/share/classes/java/lang/foreign/MemoryLayout.java line 463:
> 461: * <p>
> 462: * If the selected layout is an {@linkplain AddressLayout address layout}, calling {@link VarHandle#get(Object...)}
> 463: * on the returned var handle will return a new memory segment. The segment is associated with a scope that is
Should this say 'global scope' as well?
src/java.base/share/classes/java/lang/foreign/MemorySegment.java line 2367:
> 2365: * A scope models the <em>lifetime</em> of all the memory segments associated with it. That is, a memory segment
> 2366: * cannot be accessed if its associated scope is not {@linkplain #isAlive() alive}. Scope instances can be compared
> 2367: * for equality. That is, two scopes are considered {@linkplain #equals(Object)} if they denote the same lifetime.
missing plain text in the link tag
-------------
PR Review: https://git.openjdk.org/jdk/pull/16183#pullrequestreview-1676868842
PR Review Comment: https://git.openjdk.org/jdk/pull/16183#discussion_r1358496679
PR Review Comment: https://git.openjdk.org/jdk/pull/16183#discussion_r1358498568
PR Review Comment: https://git.openjdk.org/jdk/pull/16183#discussion_r1358500044
More information about the core-libs-dev
mailing list