RFR: 8230797: ARM32-softfp: assertion in InterpreterRuntime::resolve_ldc
christoph.goettschkes at microdoc.com
christoph.goettschkes at microdoc.com
Fri Dec 6 11:10:05 UTC 2019
Hi,
please review the following change, which fixes an assertion in the
template interpreter for ARM32-softfp. Without this fix, a debug VM on
that platform does not even start up and crashes while loading the
runtime.
http://cr.openjdk.java.net/~cgo/8230797/webrev.00/
https://bugs.openjdk.java.net/browse/JDK-8230797
The problem is, that for ARM32-softfp, the template interpreter calls into
the runtime to load double constant using the ldc bytecode [1]. After the
interpreter loaded the constants, the assert blocks does some sanity
checks on the cached constants. But if the double constant is the first to
constant to be loaded, the cache is not yet initialized and the check
results in a SIGSEGV.
I guarded the usage of "ConstantPool::cp_to_object_index" by another
check, which tests if there are any resolved references and if therefore
the cache has already been initialized.
ARM32-softp VM starts successfully again. No regression found using the
hotspot tier1 JTreg test with a fastdebug VM on ARM32-softfp.
Thanks,
Christoph
[1]
https://hg.openjdk.java.net/jdk/jdk/file/c6d7bb2146aa/src/hotspot/cpu/arm/templateTable_arm.cpp#l475
More information about the hotspot-runtime-dev
mailing list