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].
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
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.
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.
Malcolm Atkinson, Laurent Daynes, Mick Jordan, Tony Printezis, and Susan Spence. An Orthogonally Persistent Java. ACM SIGMOD Record, 25(4), December 1996.
Bruno Blanchet. Escape Analysis for Object-Oriented Languages. Application to Java. In Proceedings of OOPSLA’99, pages 20–34, November 1999.
Jeff Bogda and Urs Holzle. Removing Unnecessary Synchronization in Java. In Proceedings of OOPSLA’99, pages 35–46, November 1999.
Shigeru Chiba. A Metaobject Protocol for C++. In Proceedings of OOPSLA’95, pages 285–299, 1995.
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.
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.
Dawson R. Engler and Todd A. Proebsting. Vcode: a Retargetable, Extensible, Very Fast Dynamic Code Generation System. In Proceedings of PLDI’ 96, 1996.
Nobuhisa Fujinami. Automatic and Efficient Run-Time Code Generation Using Object-Oriented Languages. In Proceedings of ISCOPE’ 97, December 1997.
Michael Gölm. metaXa and the Future of Reflection. In Proceedings of OOPSLA’98 Workshop on Reflective Programming in C++ and Java, October 1998.
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.
Yuuji Ichisugi and Yves Roudier. Extensible Java Preprocessor Kit and Tiny Data-Parallel Java. In Proceedings of ISCOPE’ 97, December 1997.
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.
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.
Fuyuhiko Maruyama, Hirotaka Ogawa, and Satoshi Matsuoka. An Effective Decompilation Algorithm for Java Bytecodes. IPSJ Journal PRO (written in Japanese), 1999.
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.
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.
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.
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.
Ole Agesen. Design and Implementation of Pep, a Java Just-In-Time Translator. Theory and Practice of Object Systems, 3(2):127–155, 1997.
Ulrik Pagh Schultz, Julia L. Lawall, Charles Consel, and Gilles Muller. Towards Automatic Specialization of Java Programs. In Proceedings of ECOOP’99, June 1999.
Kouya Shimura. OpenJIT Backend Compiler. http://www.openjit.org/docs/backend-compiler/openjit-shimura-doc-1.pdf, June 1998.
Kouya Shimura and Yasunori Kimura. Experimental Development of Java JIT Compiler. In IPSJ SIG Notes 96-ARC-120, pages 37–42, 1996.
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.
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.
Todd A. Proebsting and Scott A. Watterson. Krakatoa: Decompilation in Java. In Proceedings of COOTS’97, June 1997.
Stanford University. SUIF Homepage. http://www-suif.stanford.edu/.
Eugen-Nicolae Volanschi, Charles Consel, and Crispin Cowan. Declarative Specialization of Object-Oriented Programs. In Proceedings of OOPSLA’97, pages 286–300, October 1997.
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.
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.
John Whaley and Martin Rinard. Compositional Pointer and Escape Analysis for Java Programs. In Proceedings of OOPSLA’99, pages 187–206, November 1999.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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