[foreign-memaccess+abi] RFR: Investigate alternate strategy to acquire resource scopes

Maurizio Cimadamore mcimadamore at openjdk.java.net
Tue Apr 20 14:24:37 UTC 2021


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.

(this is based on the assumption that C2 can't come in and just drop `scope` before the finally block - I will need to verify that claim separately :-) ).

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

Commit messages:
 - Initial push

Changes: https://git.openjdk.java.net/panama-foreign/pull/511/files
 Webrev: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=511&range=00
  Stats: 115 lines in 9 files changed: 67 ins; 8 del; 40 mod
  Patch: https://git.openjdk.java.net/panama-foreign/pull/511.diff
  Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/511/head:pull/511

PR: https://git.openjdk.java.net/panama-foreign/pull/511


More information about the panama-dev mailing list