On Fri, 4 Sep 2026 17:39:19 GMT, Jorn Vernee <[email protected]> wrote:
>> See the JBS issue for the full explanation of the issue. >> >> Now that https://github.com/openjdk/jdk/pull/25315 was integrated, we are >> able to reliably scan for session oops in a frame, and only deoptimize those >> frames where the oop is live. >> >> I ran the `ConcurrentClose` benchmark before and after this patch, and these >> were the results: >> >> >> Before: >> >> Benchmark Mode Cnt Score Error >> Units >> ConcurrentClose.sharedClose avgt 10 10.139 ± 0.416 >> us/op >> ConcurrentClose.sharedClose:closing avgt 10 29.288 ± 1.257 >> us/op >> ConcurrentClose.sharedClose:memorySegmentAccess avgt 10 0.651 ± 0.030 >> us/op >> ConcurrentClose.sharedClose:otherAccess avgt 10 0.478 ± 0.026 >> us/op >> >> After: >> >> Benchmark Mode Cnt Score Error >> Units >> ConcurrentClose.sharedClose avgt 10 9.860 ± 0.387 >> us/op >> ConcurrentClose.sharedClose:closing avgt 10 28.641 ± 1.175 >> us/op >> ConcurrentClose.sharedClose:memorySegmentAccess avgt 10 0.470 ± 0.013 >> us/op >> ConcurrentClose.sharedClose:otherAccess avgt 10 0.468 ± 0.015 >> us/op >> >> >> We can see that now the unrelated memory access in `memorySegmentAccess` is >> no longer being affected by a scope being closed in another thread. >> >> Testing: `jdk_foreign` suite, and I repeat ran >> `java/foreign/TestHandshake.java` 50 times as well, which is our stress test >> for shared scopes. >> >> --------- >> - [x] I confirm that I make this contribution in accordance with the >> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). > > Jorn Vernee has updated the pull request with a new target base due to a > merge or a rebase. The incremental webrev excludes the unrelated changes > brought in by the merge/rebase. The pull request contains four additional > commits since the last revision: > > - Remove old comment > - Merge branch 'master' into ScanOops > - Merge branch 'master' into ScanOops > - Scan for session oop before deoptimizing src/hotspot/share/prims/scopedMemoryAccess.cpp line 248: > 246: > 247: nmethod* code = last_frame.cb()->as_nmethod(); > 248: if (code->has_scoped_access() && is_session_live(last_frame, > ®ister_map)) { I'd assert that this condition is always false for non-deoptimizable frames (`last_frame.can_be_deoptimized() == false`). Otherwise, looks good. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/30926#discussion_r3938018487
