On Mon, 9 Sep 2024 15:30:47 GMT, Maurizio Cimadamore <mcimadam...@openjdk.org> wrote:
>> 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. > > Maurizio Cimadamore has updated the pull request incrementally with one > additional commit since the last revision: > > Drop spurious change src/java.base/share/classes/java/nio/MappedMemoryUtils.java line 128: > 126: static { > 127: registerNatives(); > 128: isLoaded0(0, 0, 0); This spurious line was added for debugging reasons in a previous PR - it should have been removed. Doing it now. This is probably the cause of https://bugs.openjdk.org/browse/JDK-8339780 ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/20914#discussion_r1750481339