Hi, This patch makes `MemorySessionImpl.state` a `Stable` field so that liveness check of non-closeable scopes such as the global scope can be elided.
Currently, the `state` field is overloaded with 2 responsibilities, to act as a communication device between `close` and `checkValidState`, as well as a communication device between `close`, `acquire`, and `release`. This patch separates those concerns into `state` and `acquireCount`, allowing `state` to be marked as `@Stable`. With the patch, in `MemorySegmentGetUnsafe`, `panama` is able to be on par with `unsafe`: Benchmark Mode Cnt Score Error Units MemorySegmentGetUnsafe.panama avgt 30 0.340 ± 0.008 ns/op MemorySegmentGetUnsafe.unsafe avgt 30 0.332 ± 0.004 ns/op For reference this is the results without this patch: Benchmark Mode Cnt Score Error Units MemorySegmentGetUnsafe.panama avgt 30 0.420 ± 0.019 ns/op MemorySegmentGetUnsafe.unsafe avgt 30 0.329 ± 0.003 ns/op Please kindly review, thanks very much. ------------- Commit messages: - make MemorySessionImpl.state Stable Changes: https://git.openjdk.org/jdk/pull/21810/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=21810&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8343394 Stats: 45 lines in 5 files changed: 12 ins; 12 del; 21 mod Patch: https://git.openjdk.org/jdk/pull/21810.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/21810/head:pull/21810 PR: https://git.openjdk.org/jdk/pull/21810