Ideas for code contributions
This page highlights some ideas for code contributions. Some of these selections also appear in our issue tracker. Please volunteer to pluck these fruit, or suggest high-priority, but low-effort tasks by creating new tracker entries. If you want to help out and don’t know what to do, ask us on the mailing lists and mention what kind of tasks you’re interested in.
Low-hanging fruit (high priority, low-effort)
- Write tests: The test coverage is abysmal. We need all kinds of tests. Infrastructure for unit tests, Jasmin-based tests and benchmarks is already in place and could possibly be re-used.
- Complete missing pieces of library interface : There are a handful of methods in Jikes RVM’s implementation of a few core library classes ( java.lang.Class, java.lang.Runtime, java.lang.Throwable) that throw UnimplementedError. Provide an implementation for one of these methods.
- Improve efficiency of some optimizing compiler phase : Many of the optimizing compiler passes use sub-optimal data structures, and compile-time could easily be improved. Some simple phases to start with include the local optimizations and flow-insensitive optimizations.
- Implement missing JNI functionality : See tracker items: CreateJavaVM, Attach/DetachCurrentThread. OnUnload is also missing but not a high priority because the Jikes RVM currently does not implement class unloading.
- Strip mining : This optimization would be profitable, by reducing the overhead of yield point checks in tight loops.
- Global Array Bounds Check Elimination : While the literature presents several algorithms for array bounds check elimination, the optimizing compiler does not have a complete implementation. Note that there are some non-trivial technical difficulties with ABCD, regarding integer overflow. A simple range propagation dataflow solver would be an improvement over what the system has now (namely nothing).
- Escape Analysis: the escape analysis that is currently implemented is tailored to a few internal optimization passes and not suitable for re-use by other optimization passes. A more general and more powerful escape analysis pass would be useful.
High priority, large effort
- Support for OpenJDK as a class library: We have received community contributions for OpenJDK support. However, the patch set is large and not split into commits. Some parts of the patch set probably need to be changed or rewritten. You can help by grouping changes into commits and testing those. Reviews would also be helpful. There is also another approach to porting OpenJDK. That approach uses a container on a non-OpenJDK Jikes RVM to port incrementally. You can find the code at GitHub (#1 & #2).
- Support for x64 :** The x64 port is basically working but it needs more testing and bug fixes for less frequently occurring bugs.
- Improve situation for the optimizing compiler so that we can enable previously disabled optimizations : There are a number of optimizations in the opt compiler that are currently disabled by default because they are considered too buggy. We currently don’t have proper tests for the optimizing compilers so we need to write a lot of tests to ensure that the compiler works correctly. The compiler-internal IR verification (and its paranoid variant) could also be improved. There are also opportunities in the refactoring of the phase organisation.
- SSA: SSA form is currently disabled because of bugs. We should re-enable it.