Open VMKit Projects
Here are a few tasks that are available for newcomers to work on, depending on what your interests are. This list is provided to generate ideas, it is not intended to be comprehensive. Please ask on llvm-dev for more specifics.
- Port VMKit's JVM to Harmony or OpenJDK: VMKit currently uses GNU Classpath for the standard Java classes. Interfacing with another library such as Apache Harmony (http://harmony.apache.org) or Sun's OpenJDK (http://openjdk.java.net) may help improving support for latest benchmarks (http://www.spec.org/jvm2008).
On the LLVM side, here are a few interesting projects that would help VMKit:
- Adaptive Optimization System: Being able to adaptively optimize JIT-compiled code would dramastically help the startup time of VMKit. All the non-adaptive bits are already there in LLVM: baseline compiler (with the -fast command line and the simple register allocator), optimized compiler (with the linear scan register allocator), and a full set of optimizations changeable at runtime. What's left is a system that dynamically lookup the hotness of methods and re-compile with optimizations the methods that are often executed.
- Type-based alias-analysis: Safe languages such as ones supported by VMKit (Java, C#) benefit a lot from a type based alias analysis. LLVM currently lacks full support of this feature for safe languages.
- Misceallenous Java-related optimizations: Removal of array bounds checks, null pointer checks, devirtualization, inlining, etc.