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