src/hotspot/share/jvmci/jvmci_globals.cpp
changeset 58821 5ec8aeda451e
parent 54982 b18c8301b8c2
equal deleted inserted replaced
58819:ef8be51fff48 58821:5ec8aeda451e
    55     return false;                                      \
    55     return false;                                      \
    56   }
    56   }
    57 
    57 
    58   JVMCI_FLAG_CHECKED(UseJVMCICompiler)
    58   JVMCI_FLAG_CHECKED(UseJVMCICompiler)
    59   JVMCI_FLAG_CHECKED(EnableJVMCI)
    59   JVMCI_FLAG_CHECKED(EnableJVMCI)
       
    60   JVMCI_FLAG_CHECKED(EnableJVMCIProduct)
    60 
    61 
    61   CHECK_NOT_SET(BootstrapJVMCI,   UseJVMCICompiler)
    62   CHECK_NOT_SET(BootstrapJVMCI,   UseJVMCICompiler)
    62   CHECK_NOT_SET(PrintBootstrap,   UseJVMCICompiler)
    63   CHECK_NOT_SET(PrintBootstrap,   UseJVMCICompiler)
    63   CHECK_NOT_SET(JVMCIThreads,     UseJVMCICompiler)
    64   CHECK_NOT_SET(JVMCIThreads,     UseJVMCICompiler)
    64   CHECK_NOT_SET(JVMCIHostThreads, UseJVMCICompiler)
    65   CHECK_NOT_SET(JVMCIHostThreads, UseJVMCICompiler)
    65 
    66 
    66   if (UseJVMCICompiler) {
    67   if (UseJVMCICompiler) {
       
    68     if (FLAG_IS_DEFAULT(UseJVMCINativeLibrary) && !UseJVMCINativeLibrary) {
       
    69       char path[JVM_MAXPATHLEN];
       
    70       if (os::dll_locate_lib(path, sizeof(path), Arguments::get_dll_dir(), JVMCI_SHARED_LIBRARY_NAME)) {
       
    71         // If a JVMCI native library is present,
       
    72         // we enable UseJVMCINativeLibrary by default.
       
    73         FLAG_SET_DEFAULT(UseJVMCINativeLibrary, true);
       
    74       }
       
    75     }
    67     if (!FLAG_IS_DEFAULT(EnableJVMCI) && !EnableJVMCI) {
    76     if (!FLAG_IS_DEFAULT(EnableJVMCI) && !EnableJVMCI) {
    68       jio_fprintf(defaultStream::error_stream(),
    77       jio_fprintf(defaultStream::error_stream(),
    69           "Improperly specified VM option UseJVMCICompiler: EnableJVMCI cannot be disabled\n");
    78           "Improperly specified VM option UseJVMCICompiler: EnableJVMCI cannot be disabled\n");
    70       return false;
    79       return false;
    71     }
    80     }
   120   }
   129   }
   121 
   130 
   122   return true;
   131   return true;
   123 }
   132 }
   124 
   133 
       
   134 // Convert JVMCI flags from experimental to product
       
   135 bool JVMCIGlobals::enable_jvmci_product_mode(JVMFlag::Flags origin) {
       
   136   const char *JVMCIFlags[] = {
       
   137     "EnableJVMCI",
       
   138     "EnableJVMCIProduct",
       
   139     "UseJVMCICompiler",
       
   140     "JVMCIPrintProperties",
       
   141     "EagerJVMCI",
       
   142     "JVMCIThreads",
       
   143     "JVMCICounterSize",
       
   144     "JVMCICountersExcludeCompiler",
       
   145     "JVMCINMethodSizeLimit",
       
   146     "JVMCILibPath",
       
   147     "JVMCILibDumpJNIConfig",
       
   148     "UseJVMCINativeLibrary",
       
   149     NULL
       
   150   };
       
   151 
       
   152   for (int i = 0; JVMCIFlags[i] != NULL; i++) {
       
   153     JVMFlag *jvmciFlag = (JVMFlag *)JVMFlag::find_declared_flag(JVMCIFlags[i]);
       
   154     if (jvmciFlag == NULL) {
       
   155       return false;
       
   156     }
       
   157     jvmciFlag->clear_experimental();
       
   158     jvmciFlag->set_product();
       
   159   }
       
   160 
       
   161   bool value = true;
       
   162   JVMFlag *jvmciEnableFlag = JVMFlag::find_flag("EnableJVMCIProduct");
       
   163   if (JVMFlag::boolAtPut(jvmciEnableFlag, &value, origin) != JVMFlag::SUCCESS) {
       
   164     return false;
       
   165   }
       
   166   value = true;
       
   167   JVMFlag *jvmciCompilerFlag = JVMFlag::find_flag("UseJVMCICompiler");
       
   168   if (JVMFlag::boolAtPut(jvmciCompilerFlag, &value, origin) != JVMFlag::SUCCESS) {
       
   169     return false;
       
   170   }
       
   171 
       
   172   return true;
       
   173 }
       
   174 
   125 void JVMCIGlobals::check_jvmci_supported_gc() {
   175 void JVMCIGlobals::check_jvmci_supported_gc() {
   126   if (EnableJVMCI) {
   176   if (EnableJVMCI) {
   127     // Check if selected GC is supported by JVMCI and Java compiler
   177     // Check if selected GC is supported by JVMCI and Java compiler
   128     if (!(UseSerialGC || UseParallelGC || UseParallelOldGC || UseG1GC)) {
   178     if (!(UseSerialGC || UseParallelGC || UseParallelOldGC || UseG1GC)) {
   129       vm_exit_during_initialization("JVMCI Compiler does not support selected GC", GCConfig::hs_err_name());
   179       vm_exit_during_initialization("JVMCI Compiler does not support selected GC", GCConfig::hs_err_name());