CS 789 THEORY SEMINAR [home]
Speaker: Neal Glew
Affiliation: Intel
Date: October 25,
2004
Title: Typed
STIR:Experiences with Type Checking the IR of an Optimising Java JIT
Abstract:
Typed intermediate languages have proven useful for debugging compilers, driving optimisations, and providing a foundation for language-based security. Much previous work has been done on the theoretical foundations of typed-intermediate and type-target languages, and on how to compile functional languages using them.
While some work has been done on object-oriented languages, particularly Java, no previous work has addressed optimising just-in-time compilers (JITs) for Java or C#. My group at Intel has been working on such JITs for several years, and our main JIT, StarJIT, is a product-quality Java to IPF-native-code JIT that can also JIT C# and target IA-32 native code. Over the last year, we have designed and implemented a type system for the main intermediate language of StarJIT, called STIR, and we have modified the global optimiser to (mostly) produce type-correct output. In this talk I will describe the issues that need to be addressed in designing the type system, and how these were solved. Then I will describe the changes made to the optimiser to produce type-correct output. These changes include copy-propagation into types, and complications due to strength-reduction and the ABCD bounds-check elimination algorithm. I will also describe the two bugs discovered by type checking.