[foreign-memaccess+abi] RFR: Investigate alternate strategy to acquire resource scopes [v2]
    Maurizio Cimadamore 
    mcimadamore at openjdk.java.net
       
    Tue Apr 20 14:31:44 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 (see reachability fence inside `ResourceScopeImpl::release`).
Maurizio Cimadamore has updated the pull request incrementally with one additional commit since the last revision:
  Add reachability fence on ResourceScope::release
-------------
Changes:
  - all: https://git.openjdk.java.net/panama-foreign/pull/511/files
  - new: https://git.openjdk.java.net/panama-foreign/pull/511/files/36aa8bef..bc822811
Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=511&range=01
 - incr: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=511&range=00-01
  Stats: 9 lines in 1 file changed: 5 ins; 1 del; 3 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