--- a/src/hotspot/share/jvmci/jvmci_globals.cpp Mon Oct 28 11:33:28 2019 -0400
+++ b/src/hotspot/share/jvmci/jvmci_globals.cpp Mon Oct 28 16:06:08 2019 +0000
@@ -57,6 +57,7 @@
JVMCI_FLAG_CHECKED(UseJVMCICompiler)
JVMCI_FLAG_CHECKED(EnableJVMCI)
+ JVMCI_FLAG_CHECKED(EnableJVMCIProduct)
CHECK_NOT_SET(BootstrapJVMCI, UseJVMCICompiler)
CHECK_NOT_SET(PrintBootstrap, UseJVMCICompiler)
@@ -64,6 +65,14 @@
CHECK_NOT_SET(JVMCIHostThreads, UseJVMCICompiler)
if (UseJVMCICompiler) {
+ if (FLAG_IS_DEFAULT(UseJVMCINativeLibrary) && !UseJVMCINativeLibrary) {
+ char path[JVM_MAXPATHLEN];
+ if (os::dll_locate_lib(path, sizeof(path), Arguments::get_dll_dir(), JVMCI_SHARED_LIBRARY_NAME)) {
+ // If a JVMCI native library is present,
+ // we enable UseJVMCINativeLibrary by default.
+ FLAG_SET_DEFAULT(UseJVMCINativeLibrary, true);
+ }
+ }
if (!FLAG_IS_DEFAULT(EnableJVMCI) && !EnableJVMCI) {
jio_fprintf(defaultStream::error_stream(),
"Improperly specified VM option UseJVMCICompiler: EnableJVMCI cannot be disabled\n");
@@ -122,6 +131,47 @@
return true;
}
+// Convert JVMCI flags from experimental to product
+bool JVMCIGlobals::enable_jvmci_product_mode(JVMFlag::Flags origin) {
+ const char *JVMCIFlags[] = {
+ "EnableJVMCI",
+ "EnableJVMCIProduct",
+ "UseJVMCICompiler",
+ "JVMCIPrintProperties",
+ "EagerJVMCI",
+ "JVMCIThreads",
+ "JVMCICounterSize",
+ "JVMCICountersExcludeCompiler",
+ "JVMCINMethodSizeLimit",
+ "JVMCILibPath",
+ "JVMCILibDumpJNIConfig",
+ "UseJVMCINativeLibrary",
+ NULL
+ };
+
+ for (int i = 0; JVMCIFlags[i] != NULL; i++) {
+ JVMFlag *jvmciFlag = (JVMFlag *)JVMFlag::find_declared_flag(JVMCIFlags[i]);
+ if (jvmciFlag == NULL) {
+ return false;
+ }
+ jvmciFlag->clear_experimental();
+ jvmciFlag->set_product();
+ }
+
+ bool value = true;
+ JVMFlag *jvmciEnableFlag = JVMFlag::find_flag("EnableJVMCIProduct");
+ if (JVMFlag::boolAtPut(jvmciEnableFlag, &value, origin) != JVMFlag::SUCCESS) {
+ return false;
+ }
+ value = true;
+ JVMFlag *jvmciCompilerFlag = JVMFlag::find_flag("UseJVMCICompiler");
+ if (JVMFlag::boolAtPut(jvmciCompilerFlag, &value, origin) != JVMFlag::SUCCESS) {
+ return false;
+ }
+
+ return true;
+}
+
void JVMCIGlobals::check_jvmci_supported_gc() {
if (EnableJVMCI) {
// Check if selected GC is supported by JVMCI and Java compiler