[15] RFR: [JVMCI/Graal] add JFR compiler phase/inlining events

Jamsheed C M jamsheed.c.m at oracle.com
Wed Feb 26 02:05:52 UTC 2020


Hi,

This enhancement adds jvmci supports that is required for extending 
existing phase/inlining events support in graal compilers.

During this enhancement all jfr events related codes are moved to 
compiler/compilerEvent.hpp 
<http://cr.openjdk.java.net/~jcm/8193210/webrev/src/hotspot/share/compiler/compilerEvent.hpp.html>/ 
inline.hpp 
<http://cr.openjdk.java.net/~jcm/8193210/webrev/src/hotspot/share/compiler/compilerEvent.inline.hpp.html>/ ..cpp 
<http://cr.openjdk.java.net/~jcm/8193210/webrev/src/hotspot/share/compiler/compilerEvent.cpp.html>

Graal use these events via jvmci JFR.java 
<http://cr.openjdk.java.net/~jcm/8193210/webrev/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/JFR.java.html>helper 
class, which uses c2v 
<http://cr.openjdk.java.net/~jcm/8193210/webrev/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java.udiff.html>interface 
to post and get information from hotspot

Overview of functionalities exposed by JFR. java 
<http://cr.openjdk.java.net/~jcm/8193210/webrev/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/JFR.java.html>

Ticks, for getting current jfr counter/ time stamp. used for getting 
start time of events by Graal compiler.

CompilerPhaseEvent for posting phase event to hotspot JFR.

CompilerInlininingEvent for posting inlininig events.

CompilerPhaseEvent extends and use TYPE_COMPILERPHASETYPE content type 
for phase events, this is achieved using reregistration support added 
Markus [1]

CompilerEvent::PhaseType::register_phases is used for registering 
phases. This function is usually called on compiler singleton object 
creation. It is also called lazily if phases are not known before hand.

The event generation codes in c1/c1_GraphBuilder.cpp, 
opto/bytecodeInfo.cpp, opto/compile.hpp uses common functions exposed by 
compiler/compilerEvent.hpp 
<http://cr.openjdk.java.net/~jcm/8193210/webrev/src/hotspot/share/compiler/compilerEvent.hpp.html>/ 
inline.hpp 
<http://cr.openjdk.java.net/~jcm/8193210/webrev/src/hotspot/share/compiler/compilerEvent.inline.hpp.html>/ ..cpp 
<http://cr.openjdk.java.net/~jcm/8193210/webrev/src/hotspot/share/compiler/compilerEvent.cpp.html>

webrev: http://cr.openjdk.java.net/~jcm/8193210/webrev/

jbs: https://bugs.openjdk.java.net/browse/JDK-8193210

Testing: ran jdk/jfr in my local machine. mach5 run created, links in jbs.

Please review,

Best regards,

Jamsheed

[1] 
http://cr.openjdk.java.net/~jcm/8193210/webrev/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp.udiff.html 


http://cr.openjdk.java.net/~jcm/8193210/webrev/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointWriter.hpp.udiff.html

http://cr.openjdk.java.net/~jcm/8193210/webrev/src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.cpp.udiff.html

http://cr.openjdk.java.net/~jcm/8193210/webrev/src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.hpp.udiff.html

http://cr.openjdk.java.net/~jcm/8193210/webrev/src/hotspot/share/jfr/utilities/jfrTypes.hpp.udiff.html

http://cr.openjdk.java.net/~jcm/8193210/webrev/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/ChunkParser.java.udiff.html



More information about the hotspot-compiler-dev mailing list