GSoC/GCI Archive
Google Summer of Code 2011

Jato VM

Web Page: http://www.jatovm.org/projects.html

Mailing List: http://groups.google.com/group/jatovm?pli=1

Jato is an open source, JIT-only virtual machine for Java that aims to support the JVM specification version 2 including 1.5 amendments. It is not complete but you can run some Java applications with it on 32-bit x86 Linux machines. Jato uses Boehm GC as its garbage collector and GNU Classpath to provide essential Java run-time libraries. A port to the x86-64 architecture is currently ongoing.

Projects

  • Bytecode verifier The aim of the project is to implement a bytecode verifier for the Jato VM. The role of a bytecode verifier is basically to make sure the code a VM is loading is not malicious by running checks on it.
  • Inline Caching This is the inline caching project mentioned in Jato ToDo page http://www.jatovm.org/projects.html Inline caching is an optimization technique used in virtual machines. The technique replaces a vtable lookup for a virtual call (very common in Java) by a 1-entry cache at the call site and a single call instruction. Statistics show that this 1-entry cache hits more often than not leading to a significant performance gain with very little overhead for caching logic.
  • Porting of Jato VM to ARM My aim is to port Jato VM to ARM platform.After this project jato VM will be able to run on ARM CPU too.
  • Static Single Assignment Form SSA is a representation where an index is attached to every variable so that every definition of each variable in a program becomes unique. Many optimization algorithms are easier to implement using the SSA form rather than using the CFG directly. The purpose of this project is to implement algorithms for converting LIR to SSA form, back translation to LIR form for code emission stage and at least one optimization based on the SSA form as a proof of concept that SSA works as expected.