[foreign-memaccess+abi] Integrated: Investigate alternate strategy to acquire resource scopes
Maurizio Cimadamore
mcimadamore at openjdk.java.net
Wed Apr 21 20:36:53 UTC 2021
On Tue, 20 Apr 2021 14:19:03 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:
> The code in this PR demonstrates a possible, alternate approach to resource scope acquire.
>
> Instead of having `ResourceScope.Handle` be `AutoCloseable` (which is problematic, given that `javac` issues warning when an auto closeable is not used inside the body of the try block) this patch adds a new method on resource scopes, namely `ResourceScope::release(Handle)`.
>
> The semantics of this method is similar to the previous `Handle::close` - one thing that is different is how implicit scopes are handled - instead of trying to keep the implicit scope alive through the handle instance, here we simply return a "dummy" handle, which does nothing.
>
> The idea is that if you write idiomatic code like:
>
>
> var handle = scope.acquire();
> try {
> // critical region
> } finally {
> scope.release(handle);
> }
>
>
> This will work for both explicit scopes (since acquiring actively prevents calls to `ResourceScope::close`) - but also for implicit scopes, since the `release` call inside the finally block will effectively require the scope to be reachable at this stage (see reachability fence inside `ResourceScopeImpl::release`).
This pull request has now been integrated.
Changeset: d9e7935d
Author: Maurizio Cimadamore <mcimadamore at openjdk.org>
URL: https://git.openjdk.java.net/panama-foreign/commit/d9e7935d
Stats: 135 lines in 9 files changed: 83 ins; 9 del; 43 mod
Investigate alternate strategy to acquire resource scopes
Reviewed-by: chegar, psandoz
-------------
PR: https://git.openjdk.java.net/panama-foreign/pull/511
More information about the panama-dev
mailing list