The video on-demand of this session is available to logged in QCon attendees only. Please login to your QCon account to watch the session.

Session + Live Q&A

Understanding JIT Optimisations By Decompilation

How does the JIT compiler transform your code as it optimises it? We can try to understand what the compiler has done by looking at JIT logs, compiler data structures, and directly at the machine code, but these are all advanced options needing expert-level knowledge of compilers. How can we make it easier for everyone else? We'll show how at Shopify we have developed a pseudo-code decompiler for optimised Java code, and how it helps us understand how the Java JIT compiler is working and how we need to improve our code.

Main Takeaways

1 Find out about Shopify’s Java JIT decompiler and analysis tool.

2 Learn how to use Shopify’s tool to improve the performance of a Java application.

What is the focus of your work these days?

I work at Shopify, which is a large Canadian e-commerce company, I work on the Ruby programming language, trying to optimize it, to make it work more efficiently. But I also do a lot of work in the Java system because the technology we use to optimize Ruby is based on Java technology such as Graal and Truffle.

What is the motivation for your talk?

Understanding what the Java JIT compiler is doing. There are a few techniques we can use, such as looking at the machine code or looking at the compiler logs, or we can also look at the compiler data structures. But these are quite advanced topics. It requires really quite deep expert knowledge to do it. At Shopify, we're building a tool that we hope helps make it easier to understand what the compiler is doing. What it does is give you back Java code from your compiled Java code after it's been optimized. We hope this makes it easier for people to understand what the compiler is doing.

What is the persona and the level of the target audience?

I think it's applicable to several levels. If you are aware that there is a JIT compiler, but not what it's capable of or anything about how it works, then you can use the tool to just gain some more understanding. So it should be approachable to anyone who is aware there's a JIT compiler. If you're an expert who works with JIT compilers trying to tune them and trying to get the best performance out of your app, then you can actually use the tool as something practical in your day-to-day work. So it should be approachable to anyone who's got any kind of interest in Java.


Chris Seaton

Researcher (Senior Staff Engineer) @Shopify

Chris is a Researcher (Senior Staff Engineer) at Shopify, where he works on the Ruby programming Language, and a Visitor at the University of Manchester.He was formerly a Research Manager at the Oracle Labs Virtual Machine Research Group, where he led the TruffleRuby implementation of Ruby, and...

Read more
Find Chris Seaton at:


Monday Nov 1 / 12:10PM EDT (40 minutes)


Modern JVM Innovations


JVMJavaJava EEDevelopmentProgramming

Add to Calendar

Add to calendar


From the same track

Session + Live Q&A JVM

Cloud Native JVMs (Part 1): Cloud Native Compilation

Monday Nov 1 / 02:10PM EDT

JVMs power and run our applications and common infrastructure. JVM based languages (Java, Scala, Kotlin, Clojure, Groovy, JRuby, etc.) power dominant portions of most companies' compute footprint. And in the cloud, that same dominance continues. But JVMs, like other managed code...

Gil Tene

CTO @AzulSystems

Session + Live Q&A Java

Level Up Your Java Performance with TornadoVM

Monday Nov 1 / 01:10PM EDT

Heterogeneous hardware such as Graphics Processing Units (GPUs) and Field Programmable Gate Arrays (FPGAs) are widely used for specific domains of applications such as Machine Learning, Data Science, Numerical Analytics and Fintech, due to the offer of a higher level of performance.The increased...

Juan Fumero

Lead Architect of the TornadoVM Project & Research Fellow @OfficialUoM


Java 17: The Path, Features, Tips and Tricks Panel

Monday Nov 1 / 03:10PM EDT

Java 17 has arrived. With 14 new JEPs and thousands of updates, Java 17 delivers performance, stability, and security enhancements to continue to improve on the already solid platform. Java 17 is the latest long-term support (LTS) release under Java’s 6-month release cadence. Join our...

Simon Ritter

Deputy CTO @Azul

Kristen O'Leary

Senior Developer Relations Engineer @Google

Rory Preddy

Senior Cloud Advocate @Microsoft

View full Schedule