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

Reply via email to