Diego Parra | @dpsoft | Core Team @ Kamon
C1 Client
C2 Server
VS
Profile is about counters: https://github.com/dmlloyd/openjdk/blob/jdk8u/jdk8u/hotspot/src/share/vm/oops/methodCounters.hpp
Profiled Guided
Speculative
10x faster than Interpreter
2x faster than C1
Best of Both Worlds - C1 + C2
Common Transitions Patterns : https://www.slideshare.net/maddocig/tiered
Text
and much more..
In equivalent machine code
Into the rabbit hole
-XX:+PrintCompilation
Compilation Level
Deoptimizations
Into the rabbit hole
Someone said Assembly?
Into the rabbit hole
implicit exception: dispatches to 0x00007fdff5318274
Into the rabbit hole
Implicit Null Check?
-XX:+PrintInlining
What about virtual call inlining?
Monomorphic
Bimorphic
Megamorphic
-XX:+PrintCompilation
-XX:+PrintInlining
Compilation is OSR
Result is not used and the entire method is optimized away!
Escape Analysis for Java: http://www.research.ibm.com/people/j/jdchoi/escape.ps
There are two cases of deoptimization
Unrolled!
Jitwatch: https://github.com/AdoptOpenJDK/jitwatch