Skip to main content

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

  • Conference paper
  • First Online:
Reflection and Software Engineering (OORaSE 1999)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1826))

Included in the following conference series:

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].

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  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. 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. 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. Bruno Blanchet. Escape Analysis for Object-Oriented Languages. Application to Java. In Proceedings of OOPSLA’99, pages 20–34, November 1999.

    Google Scholar 

  5. Jeff Bogda and Urs Holzle. Removing Unnecessary Synchronization in Java. In Proceedings of OOPSLA’99, pages 35–46, November 1999.

    Google Scholar 

  6. Shigeru Chiba. A Metaobject Protocol for C++. In Proceedings of OOPSLA’95, pages 285–299, 1995.

    Google Scholar 

  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. 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. 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. Nobuhisa Fujinami. Automatic and Efficient Run-Time Code Generation Using Object-Oriented Languages. In Proceedings of ISCOPE’ 97, December 1997.

    Google Scholar 

  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. 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. Yuuji Ichisugi and Yves Roudier. Extensible Java Preprocessor Kit and Tiny Data-Parallel Java. In Proceedings of ISCOPE’ 97, December 1997.

    Google Scholar 

  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. 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. Fuyuhiko Maruyama, Hirotaka Ogawa, and Satoshi Matsuoka. An Effective Decompilation Algorithm for Java Bytecodes. IPSJ Journal PRO (written in Japanese), 1999.

    Google Scholar 

  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. 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. 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. 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. Ole Agesen. Design and Implementation of Pep, a Java Just-In-Time Translator. Theory and Practice of Object Systems, 3(2):127–155, 1997.

    Article  Google Scholar 

  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. Kouya Shimura. OpenJIT Backend Compiler. http://www.openjit.org/docs/backend-compiler/openjit-shimura-doc-1.pdf, June 1998.

  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. 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. 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. Todd A. Proebsting and Scott A. Watterson. Krakatoa: Decompilation in Java. In Proceedings of COOTS’97, June 1997.

    Google Scholar 

  28. Stanford University. SUIF Homepage. http://www-suif.stanford.edu/.

  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. 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. 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. 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 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2000 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Ogawa, H., Shimura, K., Matsuoka, S., Maruyama, F., Sohda, Y., Kimura, Y. (2000). OpenJIT Frontend System: An Implementation of the Reflective JIT Compiler Frontend. In: Cazzola, W., Stroud, R.J., Tisato, F. (eds) Reflection and Software Engineering. OORaSE 1999. Lecture Notes in Computer Science, vol 1826. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45046-7_8

Download citation

  • DOI: https://doi.org/10.1007/3-540-45046-7_8

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-67761-1

  • Online ISBN: 978-3-540-45046-7

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics