[PPC][Hotspot] Aparently unrelated SharedRuntime::c_calling_convention call fails when implementing new intrinsics

Gustavo Serra Scalet gustavo.scalet at eldorado.org.br
Fri Apr 7 14:14:59 UTC 2017


We implemented the MulAdd intrinsic on PPC on JDK 9 and now we're backporting it to 8 but I'm facing an exception which I assume it's a bug elsewhere:
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/sharedRuntime_ppc.cpp:737
# A fatal error has been detected by the Java Runtime Environment:
#  Internal Error (/home/gut/jdk8u-dev/hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp:737), pid=7631, tid=0x00003fff3454f1a0
#  guarantee(i > 0 && sig_bt[i-1] == T_LONG) failed: argument of type (bt) should have been promoted to type (T_LONG,bt) for bt in {T_BOOLEAN, T_CHAR, T_BYTE, T_SHORT, T_INT}
# JRE version: OpenJDK Runtime Environment (8.0) (build 1.8.0-internal-debug-gut_2017_04_05_11_00-b00)
# Java VM: OpenJDK 64-Bit Server VM (25.71-b00-debug mixed mode linux-ppc64 compressed oops)
# Failed to write core dump. 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/gut/hs/hotspot/src/cpu/ppc/vm/tst/hs_err_pid7631.log
# Compiler replay data is saved as:
# /home/gut/hs/hotspot/src/cpu/ppc/vm/tst/replay_pid7631.log
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
Current thread is 70365327192480
Dumping core ...

Please take a look at the diff[1] for the new muladd and a test case[2] in java, which has an argument to repeat the main loop. Setting it with a high value such as 1234 is enough to jit the code and run the intrinsic.

I also noticed that this check in hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp does not exist in JDK9 due to a changeset[3] that was not backported. But that didn't stop X64 MulAdd intrinsics to work as it is. As I implemented one with the same interface, I don't understand why it's happening now...

Thanks in advance

[1] https://gist.github.com/gut/3d5f7984ef3114113b224853867bc906#file-add-muladd-ppc-diff
[2] https://gist.github.com/gut/3d5f7984ef3114113b224853867bc906#file-testmuladd-java
[3] http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/d7f63963925f#l3.7

More information about the jdk8u-dev mailing list