GSoC/GCI Archive
Google Summer of Code 2009


Web Page:

Mailing List:

Jato is a simple Just-in-time (JIT) compiler for Java that can currently run some simple Java programs on Linux/x86.


  • Implementing support for exceptions in JATO compiler Current version of JATO compiler lacks support for exception handling. The following tasks shall be done to add such support: exceptions-aware CFG generation, correct exception handler's basic block conversion, exception manager implementation (throwing/catching), subroutine in-lining (jsr/ret elimination), writing exception checking code, NullPointerException check optimization.
  • Jato "towards a first release" improvements My proposal is to properly spill and reload mimic stack at basic block boundaries, so Jato has System.out.println working, as it is release critical.
  • Porting Jato to x86-64 The x86-64 architecture is rather ubiquitous at the moment, as many personal computers currently run on such CPUs and OS support is readily available. Currently, Jato supports only 32-bit x86 CPUs, which is suboptimal when the aforementioned hardware and software support is present. This proposal aims to improve Jato by allowing it to emit x86-64 code. Along with proper documentation, the outcome will also serve as an example of how to port Jato to other CPU architectures.
  • Replacing Jam VM Jato currently depends heavily on the Jam VM source code for class-file loading by including parts of the Jam VM source code in Jato. That was initially just a way to speed up Jato development; now it seems prudent to replace Jam VM with something else, before the dependencies are made too strong, which will only make it harder to replace in the future.