ANNOUNCE: Jato - a JIT compiler for Java
Pekka J Enberg
penberg at cs.Helsinki.FI
Mon Mar 6 10:40:25 UTC 2006
I am pleased to announce Jato, a project to build a free software
optimizing JIT compiler for Java with virtual machine enhancements to
support debugging and profiling with existing Java tools. The compiler
is still in the early stages so this announcement is directed at
interested JIT compiler hackers in hopes to attract contributors. I am
also interested any any feedback you might have.
1. What's Jato?
Jato is an optimizing Just-in-time (JIT) compiler for Java. It uses
JamVM as host virtual machine and is written in C. The target platform
is IA-32 machine architecture on GNU/Linux.
2. What's the license?
Jato is distributed under the GNU GPL version 2.
3. What's done so far?
Jato converts roughly 80% of bytecode instructions including load and
store, arithmetic, type conversion, operand stack management, and
control transfer instructions to graph-based intermediate
representation. The missing 20% are object creation and manipulation,
method invocation (invokestatic is currently being worked on) and
return instructions, and exception handling.
Also included is the beginnings of a Monoburg-based instruction
selector and simple JIT trampolines for executing compiled code. The
compiler is missing register allocator and doesn't do code
4. What's wrong with existing free software virtual machines?
They're not sufficient replacements for proprietary virtual
machines. We have free virtual machines that have ahead-of-time
compiler, an optimizing JIT compiler written in Java, JIT compiler
with naive code generation. There's also many interpreter-only virtual
Unfortunately, none of them can be used as replacement for modern Java
development which includes:
- Support for existing Java tools (IDEs, profilers)
- Hot code replacement
- Fast execution of run-time generated bytecode
5. What's the plan for 0.1?
Short-term goals for Jato are:
- Conversion of bytecode instructions to IR
- Complete BURS grammar for IA-32
- Linear scan register allocator
- JIT-only execution
6. What about 1.0?
In the long term, Jato wants to have:
- Mixed interpreter/JIT
- Single static assignment form (SSA) with code optimizations
- Debugging & Profiling (JPDA)
- Hot code replacement
- Support for dynamically typed languages (JSR-292)
7. Can I help?
Yes! The compiler is in its early stages so there's plenty of work for
8. Where can I find more info?
Jato home page is at <http://jatovm.sf.net/>. You can reach me via email
at <penberg at cs dot helsinki dot fi>.
More information about the Classpath