skip to main content
10.1145/277650.277740acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
Article
Free Access

Fast, effective code generation in a just-in-time Java compiler

Authors Info & Claims
Published:01 May 1998Publication History

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.

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. 2.A.V. Aho, R. Sethi, and J. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, Reading, MA, second edition, 1986. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. 7.F. Chow. A Portable, Machine-Independent Global Optimizer---Design and Measurements. PhD thesis, Stanford University, 1984. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. 10.J. Gosling, B. Joy and G. Steele. The Java Language Specification. Addison-Wesley, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. 11.Intel Corp. Intel Architecture Software Developer's Manual, order number 243192. 1997.Google ScholarGoogle Scholar
  12. 12.Intel Corp. Pentium Pro Family Developer's Manual, order number 000900-001. 1996.Google ScholarGoogle Scholar
  13. 13.Intel Corp. VTune: Visual Tuning Environment. Available at ht{p;//deve!ol~er,intel.congdesi~n/peffiool/vtuneGoogle ScholarGoogle Scholar
  14. 14.R. Jones and R. Lins. Garbage Collection. John Wiley & Sons, 1996.Google ScholarGoogle Scholar
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle Scholar
  17. 17.T. Lindholm and F. Yellin The Java Virtual Machine Specification. Addison-Wesley, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. 20.Microsoft Corp. MS SDK 1.5.1. Available at h ttp.://ww.w ,micro so ft. co ~ av aGoogle ScholarGoogle Scholar
  21. 21.Microsoft Corp. MS SDK 1.5.1 JIT Structure. Available at htt~://www,microsoft, co m/iava/sdlc/l 51/ vendor/vm015.htmGoogle ScholarGoogle Scholar
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Fast, effective code generation in a just-in-time Java compiler

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in
      • Published in

        cover image ACM Conferences
        PLDI '98: Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
        May 1998
        357 pages
        ISBN:0897919874
        DOI:10.1145/277650

        Copyright © 1998 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 1 May 1998

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • Article

        Acceptance Rates

        PLDI '98 Paper Acceptance Rate31of136submissions,23%Overall Acceptance Rate406of2,067submissions,20%

        Upcoming Conference

        PLDI '24

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader