The new test added by https://github.com/openjdk/jdk/pull/20854 fails 
spuriously.
While JNI lookup is now moved into the static initializer of the 
`MappedMemoryUtils` class, this class might only get initialized while in the 
middle of a scoped context.

To address this, I created a new proxy interface, namely 
`MappedMemoryUtilsProxy`. This interface is used by `ScopedMemoryAccess` to 
call the various `force`/`load`/`isLoaded`/`unload` methods, and a singleton 
instance is provided inside `MappedMemoryUtils` itself, and then exposed via 
the `SharedSecrets` mechanism.

Crucially, `MappedMemorySegmentImpl` will now _first_ obtain a 
`MappedMemoryUtilsProxy` and _then_ call `ScopedMemoryAccess`. This should move 
all class initializer side-effects out of the scoped method context.

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

Commit messages:
 - Initial push

Changes: https://git.openjdk.org/jdk/pull/20914/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=20914&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8339686
  Stats: 104 lines in 7 files changed: 48 ins; 30 del; 26 mod
  Patch: https://git.openjdk.org/jdk/pull/20914.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/20914/head:pull/20914

PR: https://git.openjdk.org/jdk/pull/20914

Reply via email to