RFR: 8167194: [JVMCI] no reliable mechanism for querying JVMCI system properties

Doug Simon doug.simon at oracle.com
Wed Oct 5 15:28:37 UTC 2016


There is currently no reliable JVMCI equivalent of -XX:+PrintFlagsFinal for listing the system properties used to configure JVMCI. This is a bug as it's important to be able to easily list flags that configure the VM. The current mechanism is to set -Djvmci.PrintFlags=true on the command line is mostly unusable as it requires adding other VM options to force  (otherwise lazy) JVMCI initialization.

The webrev adds a -XX:+JVMCIPrintSystemProperties flag that will print the system properties used to configure JVMCI shared code as well as whatever JVMCI compiler is configured. For example, here’s the output when no JVMCI compiler is configured:

java -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+JVMCIPrintSystemProperties
[JVMCI system properties]
  String jvmci.Compiler                = null
         Selects the system compiler.
 Boolean jvmci.InitTimer               = false
         Specifies if initialization timing is enabled.
 Boolean jvmci.PrintConfig             = false
         Prints VM configuration available via JVMCI and exits.
  String jvmci.TraceMethodDataFilter   = null
         Enables tracing of profiling info when read by JVMCI.
         Empty value: trace all methods
         Non-empty value: trace methods whose fully qualified name contains the value.
...

When Graal is configured as the JVMCI compiler, the following output shows why it’s useful to have the header lines (i.e., “[JVMCI system properties]"):

java -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+JVMCIPrintSystemProperties --module-path=com.oracle.graal.graal_core.jar
[JVMCI system properties]
  String jvmci.Compiler               := "graal"
         Selects the system compiler.
 Boolean jvmci.InitTimer               = false
         Specifies if initialization timing is enabled.
 Boolean jvmci.PrintConfig             = false
         Prints VM configuration available via JVMCI and exits.
  String jvmci.TraceMethodDataFilter   = null
         Enables tracing of profiling info when read by JVMCI.
         Empty value: trace all methods
         Non-empty value: trace methods whose fully qualified name contains the value.
[Graal system properties]
  String graal.ASMInstructionProfiling                                = null
         Enables instruction profiling on assembler level. Valid values are a
         comma separated list of supported instructions. Compare with subclasses
         of Assembler.InstructionCounter.
 Boolean graal.AlwaysInlineIntrinsics                                 = false
         Unconditionally inline intrinsics
 Boolean graal.AlwaysInlineVTableStubs                                = false
 Boolean graal.BenchmarkCountersDumpDynamic                           = true
         Dump dynamic counters
...


https://bugs.openjdk.java.net/browse/JDK-8167194
http://cr.openjdk.java.net/~dnsimon/8167194/

-Doug


More information about the hotspot-compiler-dev mailing list