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()); |