An Optimizing Java JIT

Philip Reames
Seminar

Over the last five years, we at Azul have developed and shipped a LLVM based just-in-time compiler within the Zing Java Virtual Machine. Falcon is the default optimizing compiler for Zing and is in widespread production use. This talk will focus on the overall design of Falcon and then explore lessons for converting high-level language abstractions into code which can be optimized well, in practice, by LLVM. The focus of the discussion will be on loop optimization, specifically techniques for normalizing loop structures into patterns handled by the existing – but relatively fragile – loop vectorizer with minimal ex tension.