Opencj: A research Java static compiler based on Open64

Keqiao Yang,Zhemin Yang,Zhiwei Cao,Zeng Huang,Di Wang,Min Yang,Binyu Zang
2009-01-01
Abstract:As Java becomes more pervasive in the programming land- scape even in HPC applications, it is very important to pro- vide optimizing compilers and more efficient runtime sys- tems. To this end, we try to leverage the synergy between static and dynamic optimization to exploit more optimiza- tion chances and improve Java runtime performance espe- cially for server applications. This paper presents our first achievement of implementing a Java static compiler Opencj which can perform fully optimization for Java applications. Opencj takes Java source files or class files as inputs and generatesmachinedependentexecutablecodeforLinux/IA32. It is developed based on Open64 with some optimizations implemented for Java. Efficient support for exception han- dling and virtual method call resolution fulfills the demands which are imposed by the dynamic features of the Java pro- gramming language. Due to the same optimizer in Opencj and Open64, the performance gap between Java and C/C++ programs can be evaluated. The evaluation of the scientific SciMark 2.0 benchmark suite shows they have a similar peak performance between its Java and C versions. The evalua- tion also illustrates that the performance of Opencj is better than GCJ for SPECjvm98 benchmark suite.
What problem does this paper attempt to address?