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) для всего вышеперечисленного.

0 ответов

Другие вопросы по тегам