8181823: [AOT] jaotc doesn't work with Graal
Summary: add new flag to indicate when to calculate class fingerprint
Reviewed-by: iklam, iveresov
--- a/hotspot/src/jdk.internal.vm.compiler/share/classes/module-info.java Tue Jun 20 17:00:07 2017 +0800
+++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/module-info.java Wed Jun 21 10:28:27 2017 -0700
@@ -39,6 +39,7 @@
uses org.graalvm.compiler.debug.TTYStreamProvider;
uses org.graalvm.compiler.hotspot.CompilerConfigurationFactory;
uses org.graalvm.compiler.hotspot.HotSpotBackendFactory;
+ uses org.graalvm.compiler.hotspot.HotSpotCodeCacheListener;
uses org.graalvm.compiler.options.OptionValuesAccess;
uses org.graalvm.compiler.nodes.graphbuilderconf.NodeIntrinsicPluginFactory;
--- a/hotspot/src/share/vm/oops/instanceKlass.cpp Tue Jun 20 17:00:07 2017 +0800
+++ b/hotspot/src/share/vm/oops/instanceKlass.cpp Wed Jun 21 10:28:27 2017 -0700
@@ -1954,7 +1954,7 @@
bool InstanceKlass::should_store_fingerprint() {
#if INCLUDE_AOT
// We store the fingerprint into the InstanceKlass only in the following 2 cases:
- if (EnableJVMCI && !UseJVMCICompiler) {
+ if (CalculateClassFingerprint) {
// (1) We are running AOT to generate a shared library.
return true;
}
--- a/hotspot/src/share/vm/runtime/globals.hpp Tue Jun 20 17:00:07 2017 +0800
+++ b/hotspot/src/share/vm/runtime/globals.hpp Wed Jun 21 10:28:27 2017 -0700
@@ -3387,6 +3387,9 @@
diagnostic(bool, UseAOTStrictLoading, false, \
"Exit the VM if any of the AOT libraries has invalid config") \
\
+ product(bool, CalculateClassFingerprint, false, \
+ "Calculate class fingerprint") \
+ \
/* interpreter debugging */ \
develop(intx, BinarySwitchThreshold, 5, \
"Minimal number of lookupswitch entries for rewriting to binary " \
--- a/hotspot/src/share/vm/runtime/java.cpp Tue Jun 20 17:00:07 2017 +0800
+++ b/hotspot/src/share/vm/runtime/java.cpp Wed Jun 21 10:28:27 2017 -0700
@@ -437,6 +437,7 @@
Thread* THREAD = thread;
JVMCIRuntime::shutdown(THREAD);
if (HAS_PENDING_EXCEPTION) {
+ HandleMark hm(THREAD);
Handle exception(THREAD, PENDING_EXCEPTION);
CLEAR_PENDING_EXCEPTION;
java_lang_Throwable::java_printStackTrace(exception, THREAD);