DeoptimizeObjectsALotThread was being unconditionally added to the mapping 
table:

       virtualConstructor.addMapping("DeoptimizeObjectsALotThread", 
DeoptimizeObjectsALotThread.class);

But is conditionally included in VMStructs:

         DEBUG_ONLY(COMPILER2_OR_JVMCI_PRESENT( \
          declare_type(DeoptimizeObjectsALotThread, JavaThread))) \ 

There is code that iterates over all the mapping table entries and calls 
db.lookupType() on each. This results in a RuntimeException if the type is not 
present in the type database:

 Caused by: java.lang.RuntimeException: No type named 
"DeoptimizeObjectsALotThread" in database 

The fix is to not add it to the mapping table if it is not present in the 
database.

Testing is in progresses. I did test locally with a debug build using 
TEST_VM_OPTS=-XX:+DeoptimizeObjectsALot to make sure the original 
DeoptimizeObjectsALotThread issue is still fixed, and then tested a release 
build without TEST_VM_OPTS=-XX:+DeoptimizeObjectsALot to make sure this new 
issue did not reproduce.

-------------

Commit messages:
 - fix DeoptimizeObjectsALotThread support for release builds

Changes: https://git.openjdk.org/jdk/pull/23339/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=23339&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8348800
  Stats: 7 lines in 1 file changed: 6 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/23339.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/23339/head:pull/23339

PR: https://git.openjdk.org/jdk/pull/23339

Reply via email to