On Thu, 31 Oct 2024 17:23:51 GMT, Quan Anh Mai <qa...@openjdk.org> wrote:

>> 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.
>
> Quan Anh Mai has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   add LoopOverRandom benchmarks

src/java.base/share/classes/jdk/internal/foreign/ConfinedSession.java line 44:

> 42:     private int asyncReleaseCount = 0;
> 43: 
> 44:     static final VarHandle ASYNC_RELEASE_COUNT= 
> MhUtil.findVarHandle(MethodHandles.lookup(), "asyncReleaseCount", int.class);

Since you are here, maybe you want to use `MHUtil::findVarHandle` also for the 
state var handle (for uniformity)

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

PR Review Comment: https://git.openjdk.org/jdk/pull/21810#discussion_r1824901791

Reply via email to