[riscv-port-jdk17u:riscv-port] RFR: 8296448: RISC-V: Fix temp usages of heapbase register killed by MacroAssembler::en/decode_klass_not_null

Dingli Zhang dzhang at openjdk.org
Sat Mar 11 10:03:48 UTC 2023

Please review this backport to riscv-port-jdk17u.
Backport of [JDK-8296448](https://bugs.openjdk.org/browse/JDK-8296448).

Compared to the original patch, 17u does not have the patches [JDK-8295457](https://bugs.openjdk.org/browse/JDK-8295457) and [JDK-8293290](https://bugs.openjdk.org/browse/JDK-8293290), so some parameters will be slightly different.

The same problem was reproduced using the same method as in the original issue:

# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/stackValue.cpp:139
# A fatal error has been detected by the Java Runtime Environment:
#  Internal Error (/home/zhangdingli/riscv-port-jdk17u/src/hotspot/share/runtime/stackValue.cpp:139), pid=1963135, tid=1963872
#  assert(oopDesc::is_oop_or_null(val, false)) failed: bad oop found
# JRE version: OpenJDK Runtime Environment (17.0.7) (fastdebug build 17.0.7-internal+0-adhoc.zhangdingli.riscv-port-jdk17u)
# Java VM: OpenJDK 64-Bit Server VM (fastdebug 17.0.7-internal+0-adhoc.zhangdingli.riscv-port-jdk17u, mixed mode, sharing, compressed class ptrs, g1 gc, linux-riscv64)
# Problematic frame:
# V  [libjvm.so+0x12057b0]  StackValue::create_stack_value(frame const*, RegisterMap const*, ScopeValue*)+0x9e2
# No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
# An error report file with more information is saved as:
# /home/zhangdingli/riscv-port-jdk17u/hs_err_pid1963135.log
# If you would like to submit a bug report, please visit:
#   https://bugreport.java.com/bugreport/crash.jsp

To reproduce using a cross-compiled build:

<java> -XX:-UseCompressedOops -XX:+UseCompressedClassPointers -Xshare:dump -Xlog:cds* -version
<java> -XX:-UseCompressedOops -XX:+UseCompressedClassPointers -Xshare:on -XX:-TieredCompilation \
       -Xlog:cds* -Xlog:gc+metaspace=info -jar renaissance-gpl-0.14.1.jar -r 1 movie-lens

The problem was solved after this patch.

- Tier1 passed without new failure on unmacthed (release).


Commit messages:
 - 8296448: RISC-V: Fix temp usages of heapbase register killed by MacroAssembler::en/decode_klass_not_null

Changes: https://git.openjdk.org/riscv-port-jdk17u/pull/12/files
 Webrev: https://webrevs.openjdk.org/?repo=riscv-port-jdk17u&pr=12&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8296448
  Stats: 52 lines in 8 files changed: 7 ins; 6 del; 39 mod
  Patch: https://git.openjdk.org/riscv-port-jdk17u/pull/12.diff
  Fetch: git fetch https://git.openjdk.org/riscv-port-jdk17u pull/12/head:pull/12

PR: https://git.openjdk.org/riscv-port-jdk17u/pull/12

More information about the riscv-port-dev mailing list