-
Bug
-
Resolution: Fixed
-
P2
-
11, 17, 18
-
b26
-
aarch64
-
Not verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8294367 | 17.0.6-oracle | Tobias Hartmann | P2 | Closed | Fixed | b01 |
JDK-8293878 | 17.0.6 | Martin Balao Alonso | P2 | Resolved | Fixed | b01 |
The fix basically replaces:
if (_offset < 0 || _offset & mask)
{
i->f(0b00, 25, 24);
i->f(0, 21), i->f(0b00, 11, 10);
i->sf(_offset, 20, 12);
} else {
i->f(0b01, 25, 24);
i->f(_offset >> size, 21, 10);
}
with
if (Assembler::is_simm9(_offset))
{
i->f(0b00, 25, 24);
i->f(0, 21), i->f(0b00, 11, 10);
i->sf(_offset, 20, 12);
} else {
assert(Assembler::is_uimm12(_offset), "should be");
i->f(0b01, 25, 24);
i->f(_offset >> size, 21, 10);
}
Th full patch is provided in attachment (the new version of the test requires to move the method from the hpp file to the inline.hpp file).
However, once applied, this patch changes the code generated by C1 and this triggers an assertion failure in the patching code:
# Internal Error (/home/christian/valhalla_c1/valhalla/open/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp:170), pid=1127960, tid=1127979
# Error: ShouldNotReachHere()
#
# JRE version: Java(TM) SE Runtime Environment (18.0) (fastdebug build 18-lworld3ea+0-2021-10-26-1342512.christian...)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 18-lworld3ea+0-2021-10-26-1342512.christian..., mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, linux-aarch64)
# Problematic frame:
# V [libjvm.so+0x1355970] MacroAssembler::pd_patch_instruction_size(unsigned char*, unsigned char*)+0x11c
#
# Core dump will be written. Default location: Core dumps may be processed with "/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %e" (or dumping to /home/christian/valhalla_c1/valhalla/open/make/core.1127960)
#
# If you would like to submit a bug report, please visit:
# https://bugreport.java.com/bugreport/crash.jsp
#
--------------- S U M M A R Y ------------
Command Line: -Xms64M -Xmx1600M --add-exports=java.base/jdk.internal.module=ALL-UNNAMED build.tools.jigsaw.AddPackagesAttribute /home/christian/valhalla_c1/valhalla/build/c1_cleanup/jdk
Host: *, AArch64, 6 cores, 46G, Oracle Linux Server release 8.3
Time: Thu Oct 28 12:06:13 2021 UTC elapsed time: 0.212753 seconds (0d 0h 0m 0s)
--------------- T H R E A D ---------------
Current thread (0x0000ffff18373320): JavaThread "C1 CompilerThread0" daemon [_thread_in_vm, id=1127979, stack(0x0000ffff04200000,0x0000ffff04400000)]
Current CompileTask:
C1: 212 5 3 java.lang.StringLatin1::hashCode (42 bytes)
Stack: [0x0000ffff04200000,0x0000ffff04400000], sp=0x0000ffff043fd1d0, free space=2036k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x1355970] MacroAssembler::pd_patch_instruction_size(unsigned char*, unsigned char*)+0x11c
V [libjvm.so+0x9ca4a4] CodeBuffer::relocate_code_to(CodeBuffer*) const+0x470
V [libjvm.so+0x9cd4d4] CodeBuffer::copy_code_to(CodeBlob*)+0x94
V [libjvm.so+0x14a035c] nmethod::nmethod(Method*, CompilerType, int, int, int, CodeOffsets*, int, DebugInformationRecorder*, Dependencies*, CodeBuffer*, int, OopMapSet*, ExceptionHandlerTable*, ImplicitExceptionTable*, AbstractCompiler*, int, GrowableArrayView<RuntimeStub*> const&, char*, int, int)+0x448
V [libjvm.so+0x14a0a6c] nmethod::new_nmethod(methodHandle const&, int, int, CodeOffsets*, int, DebugInformationRecorder*, Dependencies*, CodeBuffer*, int, OopMapSet*, ExceptionHandlerTable*, ImplicitExceptionTable*, AbstractCompiler*, int, GrowableArrayView<RuntimeStub*> const&, char*, int, int, char const*, FailedSpeculation**)+0x2dc
V [libjvm.so+0x8c3690] ciEnv::register_method(ciMethod*, int, CodeOffsets*, int, CodeBuffer*, int, OopMapSet*, ExceptionHandlerTable*, ImplicitExceptionTable*, AbstractCompiler*, bool, bool, RTMState, GrowableArrayView<RuntimeStub*> const&)+0x310
V [libjvm.so+0x71f120] Compilation::install_code(int)+0xf0
V [libjvm.so+0x721eec] Compilation::compile_method()+0x33c
V [libjvm.so+0x722764] Compilation::Compilation(AbstractCompiler*, ciEnv*, ciMethod*, int, BufferBlob*, bool, DirectiveSet*)+0x324
V [libjvm.so+0x723d28] Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x158
V [libjvm.so+0xa2dab8] CompileBroker::invoke_compiler_on_method(CompileTask*)+0x8b8
V [libjvm.so+0xa2e51c] CompileBroker::compiler_thread_loop()+0x2dc
V [libjvm.so+0x1828e54] JavaThread::thread_main_inner()+0x284
V [libjvm.so+0x182f3f8] Thread::call_run()+0xf8
V [libjvm.so+0x1535e04] thread_native_entry(Thread*)+0x104
C [libpthread.so.0+0x7738] start_thread+0x198
- backported by
-
JDK-8293878 Wrong instruction generation in aarch64 backend
- Resolved
-
JDK-8294367 Wrong instruction generation in aarch64 backend
- Closed
- relates to
-
JDK-8276538 [lworld] [AArch64] LIR_Assembler::emit_profile_inline_type temporary register conflict
- Resolved
-
JDK-8277862 [aarch64] Address::lea does not handle scaled immediate offset.
- Closed
-
JDK-8277926 [aarch64] Address constructors are lacking initialisation.
- Closed
-
JDK-8277928 Fix compilation on macosx-aarch64 after 8276108
- Resolved
- links to
-
Commit openjdk/jdk17u-dev/1e209d7d
-
Commit openjdk/jdk/72bacf8d
-
Review openjdk/jdk17u-dev/370
-
Review openjdk/jdk/6212