Advertisement

OpenJIT Frontend System: An Implementation of the Reflective JIT Compiler Frontend

  • Hirotaka Ogawa
  • Kouya Shimura
  • Satoshi Matsuoka
  • Fuyuhiko Maruyama
  • Yukihiko Sohda
  • Yasunori Kimura
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1826)

Abstract

OpenJIT is an open-ended, reflective JIT compiler framework for Java being researched and developed in a joint project by Tokyo Inst. Tech. and Fujitsu Ltd. Although in general self-descriptive systems have been studied in various contexts such as reflection and interpreter/compiler bootstrapping, OpenJIT is a first system we know to date that offers a stable, full-fledged Java JIT compiler that plugs into existing monolithic JVMs, and offer competitive performance to JITs typically written in C or C++. We propose an architecture for a reflective JIT compiler on a monolithic VM, and describe the details of its frontend system. And we demonstrate how reflective JITs could be useful class-or application specific customization and optimization by providing an important reflective “hook” into a Java system. We will focus on the Frontend portion of the OpenJIT system for this article; the details of the backend is described in [20].

Keywords

Native Code Cache Blocking Distribute Shared Memory Loop Transformation Intermediate Language 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Bowen Alpern, Dick Attanasio, Anthony Cocchi, Derek Lieber, Stephen E. Smith, Ton Ngo, and John J. Barton. Implementing Jalapeño in Java. In Proceedings of OOPSLA’ 99, 1999.Google Scholar
  2. 2.
    Yariv Aridor, Michael Factor, and Avi Teperman. cJVM: a Single System Image of a JVM on a Cluster. In Proceedings of ICPP’99, September 1999.Google Scholar
  3. 3.
    Malcolm Atkinson, Laurent Daynes, Mick Jordan, Tony Printezis, and Susan Spence. An Orthogonally Persistent Java. ACM SIGMOD Record, 25(4), December 1996.Google Scholar
  4. 4.
    Bruno Blanchet. Escape Analysis for Object-Oriented Languages. Application to Java. In Proceedings of OOPSLA’99, pages 20–34, November 1999.Google Scholar
  5. 5.
    Jeff Bogda and Urs Holzle. Removing Unnecessary Synchronization in Java. In Proceedings of OOPSLA’99, pages 35–46, November 1999.Google Scholar
  6. 6.
    Shigeru Chiba. A Metaobject Protocol for C++. In Proceedings of OOPSLA’95, pages 285–299, 1995.Google Scholar
  7. 7.
    Shigeru Chiba. Javassist — A Reflection-based Programming Wizard for Java. In Proceedings of OOPSLA’98 Workshop on Reflective Programming in C++ and Java, October 1998.Google Scholar
  8. 8.
    Jong-Deok Choi, Manish Gupta, Mauricio Serrano, Vugranam C. Sreedhar, and Sam Midkiff. Escape Analysis for Java. In Proceedings of OOPSLA’99, pages 1–19, November 1999.Google Scholar
  9. 9.
    Dawson R. Engler and Todd A. Proebsting. Vcode: a Retargetable, Extensible, Very Fast Dynamic Code Generation System. In Proceedings of PLDI’ 96, 1996.Google Scholar
  10. 10.
    Nobuhisa Fujinami. Automatic and Efficient Run-Time Code Generation Using Object-Oriented Languages. In Proceedings of ISCOPE’ 97, December 1997.Google Scholar
  11. 11.
    Michael Gölm. metaXa and the Future of Reflection. In Proceedings of OOPSLA’98 Workshop on Reflective Programming in C++ and Java, October 1998.Google Scholar
  12. 12.
    Brian Grant, Matthai Philipose, Markus Mock, Craig Chambers, and Susan J. Eggers. An Evaluation of Staged Run-time Optimization in DyC. In Proceedings of PLDI’ 99, 1999.Google Scholar
  13. 13.
    Yuuji Ichisugi and Yves Roudier. Extensible Java Preprocessor Kit and Tiny Data-Parallel Java. In Proceedings of ISCOPE’ 97, December 1997.Google Scholar
  14. 14.
    Murat Karaorman, Urs Holzle, and John Bruno. jContractor: A Reflective Java Library to Support Design by Contract. In Proceedings of Reflection’99, pages 175–196, July 1999.Google Scholar
  15. 15.
    Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Videira Lopes, Jean-Marc Loingtier, and John Irwin. Aspect-Oriented Programming. In Proceedings of ECOOP’97, pages 220–242, 1997.Google Scholar
  16. 16.
    Fuyuhiko Maruyama, Hirotaka Ogawa, and Satoshi Matsuoka. An Effective Decompilation Algorithm for Java Bytecodes. IPSJ Journal PRO (written in Japanese), 1999.Google Scholar
  17. 17.
    Hidehiko Masuhara, Satoshi Matsuoka, Keinichi Asai, and Akinori Yonezawa. Compiling Away the Meta-Level in Object-Oriented Concurrent Reflective Languages Using Partial Evaluation. In Proceedings of OOPSLA’95, pages 57–64, October 1995.Google Scholar
  18. 18.
    Hidehiko Masuhara and Akinori Yonezawa. Design and Partial Evaluation of Meta-objects for a Concurrent Reflective Language. In Proceedings of ECOOP’98, pages 418–439, July 1998.Google Scholar
  19. 19.
    Satoshi Matsuoka, Hirotaka Ogawa, Kouya Shimura, Yasunori Kimura, and Koichiro Hotta. OpenJIT — A Reflective Java JIT Compiler. In Proceedings of OOPSLA’98 Workshop on Reflective Programming in C++ and Java, October 1998.Google Scholar
  20. 20.
    Hirotaka Ogawa, Kouya Shimura, Satoshi Matsuoka, Fuyuhiko Maruyama, Yukihiko Sohda, and Yasunori Kimura. OpenJIT: An Open-Ended, Reflective JIT Compiler Framework for Java. In Proceedings of ECOOP’2000, June 2000.Google Scholar
  21. 21.
    Ole Agesen. Design and Implementation of Pep, a Java Just-In-Time Translator. Theory and Practice of Object Systems, 3(2):127–155, 1997.CrossRefGoogle Scholar
  22. 22.
    Ulrik Pagh Schultz, Julia L. Lawall, Charles Consel, and Gilles Muller. Towards Automatic Specialization of Java Programs. In Proceedings of ECOOP’99, June 1999.Google Scholar
  23. 23.
    Kouya Shimura. OpenJIT Backend Compiler. http://www.openjit.org/docs/backend-compiler/openjit-shimura-doc-1.pdf, June 1998.
  24. 24.
    Kouya Shimura and Yasunori Kimura. Experimental Development of Java JIT Compiler. In IPSJ SIG Notes 96-ARC-120, pages 37–42, 1996.Google Scholar
  25. 25.
    Yukihiko Sohda, Hirotaka Ogawa, and Satoshi Matsuoka. OMPC++ — A Portable High-Performance Implementation of DSM using OpenC++ Reflection. In Proceedings of Reflection’99, pages 215–234, July 1999.Google Scholar
  26. 26.
    Michiaki Tatsubori and Shigeru Chiba. Programming Support of Design Patterns with Compile-time Reflection. In Proceedings of OOPSLA’98 Workshop on Reflective Programming in C++ and Java, October 1998.Google Scholar
  27. 27.
    Todd A. Proebsting and Scott A. Watterson. Krakatoa: Decompilation in Java. In Proceedings of COOTS’97, June 1997.Google Scholar
  28. 28.
    Stanford University. SUIF Homepage. http://www-suif.stanford.edu/.
  29. 29.
    Eugen-Nicolae Volanschi, Charles Consel, and Crispin Cowan. Declarative Specialization of Object-Oriented Programs. In Proceedings of OOPSLA’97, pages 286–300, October 1997.Google Scholar
  30. 30.
    Ian Welch and Robert J. Stroud. From Dalang to Kava-the Evolution of a Reflective Java Extention. In Proceedings of Reflection’99, pages 2–21, July 1999.Google Scholar
  31. 31.
    Matt Welsh and David E. Culler. Jaguar: Enabling Efficient Communication and I/O from Java. Concurrency: Practice and Experience, December 1999. Special Issue on Java for High-Performance Applications.Google Scholar
  32. 32.
    John Whaley and Martin Rinard. Compositional Pointer and Escape Analysis for Java Programs. In Proceedings of OOPSLA’99, pages 187–206, November 1999.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2000

Authors and Affiliations

  • Hirotaka Ogawa
    • 1
  • Kouya Shimura
    • 2
  • Satoshi Matsuoka
    • 1
  • Fuyuhiko Maruyama
    • 1
  • Yukihiko Sohda
    • 1
  • Yasunori Kimura
    • 2
  1. 1.Tokyo Institute of TechnologyTokyo
  2. 2.Fujitsu Laboratories LimitedJapan

Personalised recommendations