RFR(L): JEP165: Compiler Control

Nils Eliasson nils.eliasson at oracle.com
Fri Sep 25 14:33:52 UTC 2015

Hi all,

Here is a new webrev including changes after feedback from Chris, 
Roland, Volker, Pavel and Igor.


Major changes:
- Moved the directives from ciEnv to Compile/Compilation/SharkCompiler.
- Changed the lifetime management of directives and directives set since 
they no longer are tied to ciEnv
- FIxed a bug that caused crash with LogCompilation
- Make sure the VM doesn't start if the supplied directives are malformed
- Readded CompilerDirectivesDCMDTest that has been lost during the patch 

Know issues:
- Won't build c1 only or shark only.
- Have yet changed back the flags Roland noted I had changed scope on.

Best regards,

On 2015-09-22 19:21, Nils Eliasson wrote:
> 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