RFR: 8264774: Implementation of Foreign Function and Memory API (Incubator)

Chris Hegarty chegar at openjdk.java.net
Wed Apr 28 09:14:53 UTC 2021


On Mon, 26 Apr 2021 17:10:13 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:

> This PR contains the API and implementation changes for JEP-412 [1]. A more detailed description of such changes, to avoid repetitions during the review process, is included as a separate comment.
> 
> [1] - https://openjdk.java.net/jeps/412

src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/ResourceScope.java line 135:

> 133: } finally {
> 134:    segment.scope().release(segmentHandle);
> 135: }

I do like the symmetry in this example, but just to add an alternative idiom:
    `segmentHandle.scope().release(segmentHandle)`
, which guarantees to avoid release throwing and IAE

src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/ResourceScope.java line 186:

> 184:      *     <li>this resource scope is confined, and this method is called from a thread other than the thread owning this resource scope</li>
> 185:      *     <li>this resource scope is shared and a resource associated with this scope is accessed while this method is called</li>
> 186:      *     <li>one or more handles (see {@link #acquire()}) associated with this resource scope have not been closed</li>

Minor spec suggestion: "... associated with this resource scope have not been *released*"

src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/ResourceScope.java line 205:

> 203:      * until all the resource scope handles acquired from it have been {@link #release(Handle)} released}.
> 204:      * @return a resource scope handle.
> 205:      */

Given recent changes, it might be good to generalise the opening sentence here. Maybe :
 " Acquires a resource scope handle associated with this resource scope. If the resource scope is explicit ... "   Or some such.

-------------

PR: https://git.openjdk.java.net/jdk/pull/3699


More information about the core-libs-dev mailing list