Graal compiler optimizations
Graph and loop transformations in a production optimizing compiler, informed by research into code duplication and loop unrolling.
Explore this work: Graal compiler optimizationsResearch / Engineering

Consulting Member of Technical Staff
Oracle
I am a compiler researcher and engineer at Oracle, working on Graal and Native Image. I design compiler transformations and carry them through implementation, correctness checks and production maintenance.
My work spans graph and loop optimizations, compilation costs and the boundary between compilers and runtimes.
I introduced Native Image’s -O3 compilation mode and implemented shared arenas for the Java Foreign Function and Memory API.
I am the principal architect and main author of Ristretto, the Native Image JIT for Java classes loaded at run time through Crema. This work is under active development.
Explore current projectsGraph and loop transformations in a production optimizing compiler, informed by research into code duplication and loop unrolling.
Explore this work: Graal compiler optimizationsAhead-of-time compilation, performance-oriented compilation modes and integration with the Java runtime.
Explore this work: Native ImageThe Native Image JIT for Java classes loaded at run time through Crema. This work is under active development.
Explore this work: RistrettoPaper 2026
Reusable compiler graphs capture work that a bytecode interpreter would otherwise repeat during partial evaluation. Integrated into GraalVM and GraalWasm, the templates specialize to static inputs, reducing compilation work and warmup time while preserving peak performance in the reported evaluation.
Paper 2019
Renaissance supplies JVM workloads built around modern concurrency and parallel programming. The paper compares Graal and HotSpot C2 and uses the suite to identify and evaluate compiler optimizations whose effects were less visible in established benchmarks.
Paper 2018
Code duplication can expose optimizations across control-flow merges, but it also increases code size and compilation cost. DBDS simulates candidate duplications before applying them, allowing a cost model to weigh the expected optimization benefits against those costs. The approach is implemented and evaluated in GraalVM.
Paper 2018
Unrolling a loop with an unknown iteration count is useful when it enables further optimization. This work simulates candidate transformations and separates hot paths from slower paths to guide that choice. Its GraalVM evaluation examines execution performance alongside code-size and compilation-time costs.