ABSTRACT
A "Just-In-Time" (JIT) Java compiler produces native code from Java byte code instructions during program execution. As such, compilation speed is more important in a Java JIT compiler than in a traditional compiler, requiring optimization algorithms to be lightweight and effective. We present the structure of a Java JIT compiler for the Intel Architecture, describe the lightweight implementation of JIT compiler optimizations (e.g., common subexpression elimination, register allocation, and elimination of array bounds checking), and evaluate the performance benefits and tradeoffs of the optimizations. This JIT compiler has been shipped with version 2.5 of Intel's VTune for Java product.
- 1.O. Agesen and D. Detlefs. Finding References in Java Stacks. Presented at the OOPSLA'97 Workshop on Garbage Collection and Memory Management, Atlanta, October 1997. Google ScholarDigital Library
- 2.A.V. Aho, R. Sethi, and J. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, Reading, MA, second edition, 1986. Google ScholarDigital Library
- 3.D. Bemstein, D. Q. Goldin, M.C. Golumbic, H. Krawczyk, Y. Mansour, I. Nahshon, and R.Y. Pinter. Spill code minimization techniques for optimizing compilers. In Proceedings of the A CM SIGPLAN '89 Conference on Programming Language Design and Implementation, pages 258- 263. ACM, July 1989. Google ScholarDigital Library
- 4.P. Briggs, K.D. Cooper, K. Kennedy, and L. Torczon. Coloring heuristics for register allocation. In Proceedings of the A CM SIGPLAN '89 Conference on Programming Language Design and Implementation, pages 275-284. ACM, July 1989. Google ScholarDigital Library
- 5.D. Callanhan and B. Koblenz. Register allocation via hierarchical graph coloring. In Proceedings of the A CM SIGPLAN '91 Conference on Programming Language Design and Implementation, pages 192-203. ACM, June 1991. Google ScholarDigital Library
- 6.G.J. Chaitin, M. A. Auslander, A. K. Chandra, J. Cocke, M. E. Hopkins, and P. W. Markstein. Register allocation via coloring. Computer Languages, 6:47-57, January 1981.Google ScholarDigital Library
- 7.F. Chow. A Portable, Machine-Independent Global Optimizer---Design and Measurements. PhD thesis, Stanford University, 1984. Google ScholarDigital Library
- 8.F.C. Chow and J. L. Hennessy. A priority-based coloring approach to register allocation. A CM Transactions on Programming Languages and Systems, 12:501-535, Oct. 1990. Google ScholarDigital Library
- 9.D. W. Goodwin and K. D. Wilken. Optimal and Near- Optimal Global Register Allocation Using 0-1 Integer Programming. Software-Practice and Experience, 26:930-965, Aug. 1996. Google ScholarDigital Library
- 10.J. Gosling, B. Joy and G. Steele. The Java Language Specification. Addison-Wesley, 1996. Google ScholarDigital Library
- 11.Intel Corp. Intel Architecture Software Developer's Manual, order number 243192. 1997.Google Scholar
- 12.Intel Corp. Pentium Pro Family Developer's Manual, order number 000900-001. 1996.Google Scholar
- 13.Intel Corp. VTune: Visual Tuning Environment. Available at ht{p;//deve!ol~er,intel.congdesi~n/peffiool/vtuneGoogle Scholar
- 14.R. Jones and R. Lins. Garbage Collection. John Wiley & Sons, 1996.Google Scholar
- 15.J. Knoop, O. Ruthing, and B. Steffen. Lazy code motion. In Proceedings of the A CM $IGPLAN 92 Conference on Programming language Design and Implementation, pages 224-234. ACM, June 1992. Google ScholarDigital Library
- 16.A. Krall and R. Graft. CACAO---A 64-bit Java VM Justin-Time Compiler. In Proceedings of the ACM PPoPP97 Workshop on Java for Science and Engineering Computation.Google Scholar
- 17.T. Lindholm and F. Yellin The Java Virtual Machine Specification. Addison-Wesley, 1996. Google ScholarDigital Library
- 18.G. Lueh and T. Gross. Call-cost directed register allocation. In Proceedings of the A CM SIGPLAN 97 Conference on Programming Language Design and implementation, pages 296-307. ACM, June 1997. Google ScholarDigital Library
- 19.G. Lueh, T. Gross, and A. Adl-Tabatabai. Global register allocation based on graph fusion. In Proceedings of the 96 Workshop on Languages and Compilers for Parallel Computing, pages 246-265. Aug. 1996. Springer-Verlag. Google ScholarDigital Library
- 20.Microsoft Corp. MS SDK 1.5.1. Available at h ttp.://ww.w ,micro so ft. co ~ av aGoogle Scholar
- 21.Microsoft Corp. MS SDK 1.5.1 JIT Structure. Available at htt~://www,microsoft, co m/iava/sdlc/l 51/ vendor/vm015.htmGoogle Scholar
- 22.C. Norris and L. L. Pollock. Register allocation over the program dependence graph, in Proceedings of the A CM SIGPLAN 94 Conference on Programming Language Design and Implementation, pages 266-277. ACM, June 1994. Google ScholarDigital Library
- 23.M. Poletto, D.R. Engler and M.F. Kaashoek. tcc: A System for Fast, Flexible, and High-Level Dynamic Code Generation. In Proceedings of the A CM SIGPLAN 97 Conference on Programming Language Design and Implementation, pages 109-121. ACM, June 1997. Google ScholarDigital Library
Index Terms
- Fast, effective code generation in a just-in-time Java compiler
Recommendations
Fast, effective code generation in a just-in-time Java compiler
A "Just-In-Time" (JIT) Java compiler produces native code from Java byte code instructions during program execution. As such, compilation speed is more important in a Java JIT compiler than in a traditional compiler, requiring optimization algorithms to ...
Evolution of a java just-in-time compiler for IA-32 platforms
JavaTM has gained widespread popularity in the industry, and an efficient Java virtual machine (JVMTM) and just-in-time (JIT) compiler are crucial in providing high performance for Java applications. This paper describes the design and implementation of ...
The jastadd extensible java compiler
Proceedings of the 2007 OOPSLA conferenceThe JastAdd Extensible Java Compiler is a high quality Java compiler that is easy to extend in order to build static analysis tools for Java, and to extend Java with new language constructs. It is built modularly, with a Java 1.4 compiler that is ...
Comments