Relates :
|
|
Relates :
|
|
Relates :
|
On a debug build you get an assertion failure when generating the itable stub like this: # To suppress the following error report, specify this argument # after -XX: or in .hotspotrc: SuppressErrorAt=/vtableStubs_aarch64.cpp:220 # # A fatal error has been detected by the Java Runtime Environment: # # Internal Error (src/hotspot/cpu/aarch64/vtableStubs_aarch64.cpp:220), pid=151750, tid=151751 # assert(slop_delta >= 0) failed: itable #2: Code size estimate (152) for lookup_interface_method too small, required: 156 # # JRE version: OpenJDK Runtime Environment (14.0) (fastdebug build 14-internal+0-adhoc.nicgas01.jdk) # Java VM: OpenJDK 64-Bit Server VM (fastdebug 14-internal+0-adhoc.nicgas01.jdk, mixed mode, sharing, tiered, compressed oops, g1 gc, linux-aarch64) # Problematic frame: # V [libjvm.so+0x17034ec] VtableStubs::create_itable_stub(int)+0xda4 # # CreateCoredumpOnCrash turned off, no core file dumped # # An error report file with more information is saved as: # /home/nicgas01/jdk/hs_err_pid151750.log # # If you would like to submit a bug report, please visit: # https://bugreport.java.com/bugreport/crash.jsp # On a release build there's a guarantee() failure later on: # Internal Error (vtableStubs.cpp:197), pid=6213, tid=6217 # guarantee(masm->pc() <= s->code_end()) failed: itable #2: overflowed buffer, estimated len: 176, actual len: 180, overrun: 4 JDK-8231610 changed the location of where things are loaded during this test which triggers a very inefficient path in MacroAssembler::decode_klass_not_null. This then overflows the expected maximum itable stub size.
|