To many developers, compilers are mysterious — and the just-in-time compilers in a modern runtime simply seem to be black magic. However, there are really only a few simple concepts that guide any compiler and once you understand them you can make the compiler work for you.
In this talk, we’ll go through a seemingly simple piece of Java code in detail examining the many techniques that OpenJDK uses to make that piece of code run fast including static optimizations, speculative profiled based optimizations, and how those optimizations tie into the real black magic of the JVM deoptimization.
- Douglas HawkinsDouglas Hawkins has been passionately developing software for the past 10 years — creating applications for bioinformatics, finance, and retail. However, Doug's true interest has always been in exploring and explaining the low-levels inside the virtual machines that we use everyday. To make byte code more accessible, he created the open-source Java Assembler Kit (JAK) which provides a fluent API for producing Java byte code and includes a REPL to allow for interactive experimentation. Recently, Doug moved to Sunnyvale CA to pursue his interest in VMs full-time as a VM Engineer at Azul Systems. @dougqh