JEP 234: Additional Run-Time Compiler JVM Trace Events

OwnerIgor Ignatyev
Created2014/05/19 18:32
Updated2015/02/22 21:41
TypeFeature
StatusCandidate
Componenthotspot / compiler
ScopeImplementation
Discussionhotspot dash compiler dash dev at openjdk dot java dot net
EffortM
DurationM
Priority4
Reviewed byAleksandre Iline, Mikael Vidstedt, Vladimir Kozlov
Endorsed byMikael Vidstedt
Release10
Issue8043473

Summary

Extend the set of JVM trace events generated by the run-time compilers.

Success Metrics

Motivation

JEP 167 added infrastructure for detailed tracing of the JVM. It introduced a basic set of useful run-time compiler events but that set doesn't provide any information about which optimizations were used, what the optimizations did, why compilation failed, and so forth.

Description

Define additional events that will add more detail to the workings of the run-time compilers, useful for testing as well as profiling.

Some compilation phase events are already emitted by C2; we will extend C1 to emit them as well, if needed.

Compilation phase events will provide information including a compilation identifier and a representation of the method being compiled, or its relevant characteristics, and be emitted at the end of a phase. If a compilation phase fails then an event describing the failure will emitted. Phases for which we will consider adding events are:

Events about applied optimizations will include a compilation identifier and describe the transformations performed. The events will be emitted when an optimization is completed. Events will be defined for, at least, all high-level optimizations, e.g.,

Other events which affect compilation and execution of a compiled method will also be emitted, e.g.,

Alternatives

The white-box testing API can be used to get this information but it has no facility for recording events for later analysis.