On Thu, 8 Oct 2026 04:21:22 GMT, Vladimir Petko <[email protected]> wrote:
> Implement suggestions in https://bugs.openjdk.org/browse/JDK-8387577. > This PR uses "approximate" pc that matches the registration offset of oops > map. > > > Testing - tier1 and tier2 test run > > make test TEST=":tier1 :tier2" CONF=linux-s390x-server-fastdebug > ============================== > Test summary > ============================== > TEST TOTAL PASS FAIL ERROR > SKIP >>> jtreg:test/hotspot/jtreg:tier1 3887 3411 8 0 >>> 468 << > jtreg:test/jdk:tier1 2656 2605 0 0 > 51 > jtreg:test/langtools:tier1 4775 4763 0 0 > 12 > jtreg:test/jaxp:tier1 0 0 0 0 > 0 > jtreg:test/lib-test:tier1 41 41 0 0 > 0 >>> jtreg:test/hotspot/jtreg:tier2 1059 846 3 0 >>> 210 << >>> jtreg:test/jdk:tier2 4609 4351 2 0 >>> 256 << > jtreg:test/langtools:tier2 14 12 0 0 > 2 > jtreg:test/jaxp:tier2 524 523 0 0 > 1 > jtreg:test/docs:tier2 4 0 0 0 > 4 > ============================== > TEST FAILURE > > Failed tests also fail on master branch for the same reason, > test/hotspot/jtreg/runtime/ErrorHandling/CreateCoredumpOnCrash.java` passes > after enabling `ulimit -c unlimited`. > > > ============================== > Test summary > ============================== > TEST TOTAL PASS FAIL ERROR > SKIP > jtreg:test/hotspot/jtreg/compiler/c2/igvn/TestOptimizeTrichotomy.java#Xcomp >>> 1 0 1 0 >>> 0 << > > jtreg:test/hotspot/jtreg/compiler/c2/igvn/TestOptimizeTrichotomy.java#vanilla >>> 1 0 1 0 >>> 0 << > > jtreg:test/hotspot/jtreg/compiler/escapeAnalysis/TestBCEscapeAnalyzerOverflow.java >>> 1 0 1 0 >>> 0 << > jtreg:test/hotspot/jtreg/compiler/gcbarriers/TestZGCBarrierElision.java#Z >>> 1 0 1 0 >>> 0 << > > jtreg:test/hotspot/jtreg/compiler/loopopts/superword/TestDoNotFilterNaNSummands.java >>> 1 0 1 0 >>> 0 << > ... Hi Vladimir, your fix looks good to me in general. I do think though you have to handle `pc == null` in `JavaThread::pd_last_frame()` independently of `ASSERT`. Thanks, Richard. src/hotspot/cpu/s390/sharedRuntime_s390.cpp line 4218: > 4216: __ push_frame_abi160(0); > 4217: Label frame_pc; > 4218: __ z_larl(Z_R1_scratch, frame_pc); I thought `__ get_PC(Z_R1_scratch);` would be ok here but I see `RuntimeBlob::RuntimeBlob()` copies the `CodeBuffer` so you need to use the label for `frame_pc` to patch this instruction. src/hotspot/os_cpu/linux_s390/javaThread_linux_s390.cpp line 36: > 34: address pc = _anchor.last_Java_pc(); > 35: > 36: #ifdef ASSERT `pc == null` is valid here when a c2 runtime stub called into the vm (I explained it in this [PR comment](https://github.com/openjdk/jdk/pull/31441#discussion_r3441548556)). You have to handle it outside of the `#ifdef ASSERT`. ------------- Changes requested by rrich (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/33262#pullrequestreview-5466482658 PR Review Comment: https://git.openjdk.org/jdk/pull/33262#discussion_r4227461065 PR Review Comment: https://git.openjdk.org/jdk/pull/33262#discussion_r4227251824
