RFR(L): JEP165: Compiler Control

Nils Eliasson nils.eliasson at oracle.com
Tue Sep 22 17:21:47 UTC 2015


Hi,

This is the initial RFR for JEP165: Compiler Control. This feature 
enables runtime manageable, method dependent compiler flags. (Immutable 
for the duration of a compilation.)

The change includes:
- A parser for the directives format (json like) including vmtests 
(json.cpp/hpp)
- A component for construction of compiler directives 
(directivesParser.cpp/hpp)
- The directives including the option definitions, default values and 
compilecommand relations (compilerDirectives.cpp/hpp)
- Diagnostic commands for working with the directives - installing, 
removing, printing
- Lots of small changes wherever we access flags or legacy 
compilecommands in the compiler

Notes:
The feature is documented in the JEP 
(https://bugs.openjdk.java.net/browse/JDK-8046155).

Currently only a small amount of compiler flags are included in the 
change. The flags are a representative selection of different types 
targeting both compilers. All of them existed as CompilerOracle option 
commands. Two commands was not included in the directives due to time 
constraints - CompilerThresholdScaling and UseRTMLocks. Both are 
accessed from runtime (outside any compiler) and requires some special 
handling. (Solved but not implemented.)

Full backwards compatibility with CompileCommands is implemented but can 
be turned off with flag -XX:CompileCommandCompatibilty. Also meta 
handling the compatibility flag by supporting it in the directives (test 
feature).

The change contain some rough edges that will polished over the coming 
days.

JEP: https://bugs.openjdk.java.net/browse/JDK-8046155
Hotspot webrev: http://cr.openjdk.java.net/~neliasso/8046155/webrev.01/
JDK webrev: http://cr.openjdk.java.net/~neliasso/8046155/webrev_jdk.01/

Please review!

Best regards,
Nils Eliasson


More information about the hotspot-compiler-dev mailing list