jdk.vm.ci.common.JVMCIError: компилятор JVMCI не выбран с Java9, но не с Java10
Я пытаюсь поэкспериментировать с JVMCI и его существованием в JDK, используя следующее из списка рассылки:
private static void JVMCIQueries() {
// Check if the JDK used supports JVMCI?
String vm_version = System.getProperty("java.vm.version");
System.out.printf("java.vm.version = %s%n", vm_version);
HotSpotDiagnosticMXBean bean = ManagementFactory.getPlatformMXBean(HotSpotDiagnosticMXBean.class);
// Is JVMCI enabled by default?
VMOption enableJVMCI = bean.getVMOption("EnableJVMCI");
System.out.println(enableJVMCI);
// Is the system using the JVMCI compiler for normal compilations?
VMOption useJVMCICompiler = bean.getVMOption("UseJVMCICompiler");
System.out.println(useJVMCICompiler);
// What compiler is selected?
String compiler = System.getProperty("jvmci.Compiler");
System.out.printf("jvmci.Compiler = %s%n", compiler);
}
(править) С аргументами VM как:
-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler
Java 10 (2018-03-20) Результат
java.vm.version = 10+46 VM option: EnableJVMCI value: true origin: VM_CREATION (read-only) VM option: UseJVMCICompiler value: true origin: VM_CREATION (read-only) jvmci.Compiler = null
Java 9.0.4 Результат
java.vm.version = 9.0.4+11 VM option: EnableJVMCI value: true origin: VM_CREATION (read-only) VM option: UseJVMCICompiler value: true origin: VM_CREATION (read-only) jvmci.Compiler = null
но это сопровождается журналами, которые жалуются
jdk.vm.ci.common.JVMCIError: no JVMCI compiler selected at jdk.internal.vm.ci/jdk.vm.ci.hotspot.HotSpotJVMCICompilerConfig$DummyCompilerFactory.compileMethod(HotSpotJVMCICompilerConfig.java:45) at jdk.internal.vm.ci/jdk.vm.ci.hotspot.HotSpotJVMCICompilerConfig$DummyCompilerFactory.compileMethod(HotSpotJVMCICompilerConfig.java:42) at jdk.internal.vm.ci/jdk.vm.ci.hotspot.HotSpotJVMCIRuntime.compileMethod(HotSpotJVMCIRuntime.java:433)
Когда с обеими версиями jvmci.Compiler
значение null
Что не означает, что компилятор JVMCI не выбран именно здесь для 9.0.4(почему не в 10)?
Это может показаться глупым или не связанным, но я возвращаюсь к той части, где я должен знать, включает ли Java 9 Graal?? Так как я думал, что даже если 9.0.4 этого не произойдет, я не указал то же самое на Java10 (-Djvmci.Compiler
флаг). Какие-либо конфигурации по умолчанию, которые могли измениться?
Примечание. Использование MacOS(x64) для всего вышеперечисленного.