Abstract
Software systems have been using "just-in-time" compilation (JIT) techniques since the 1960s. Broadly, JIT compilation includes any translation performed dynamically, after a program has started execution. We examine the motivation behind JIT compilation and constraints imposed on JIT compilation systems, and present a classification scheme for such systems. This classification emerges as we survey forty years of JIT work, from 1960--2000.
- Abrams, P. S. 1970. An APL machine. Ph.D. dissertation. Stanford University, Stanford, CA. Also, Stanford Linear Accelerator Center (SLAC) Rep. 114. Google ScholarDigital Library
- Adl-Tabatabai, A.-R., Cierniak, M., Lueh, G.-Y., Parikh, V. M., and Stichnoth, J. M. 1998. Fast, effective code generation in a just-in-time Java compiler. In PLDI '98. 280--290. Google ScholarDigital Library
- Agesen, O. 1996. Concrete type inference: Delivering object-oriented applications. Ph.D. dissertation. Stanford University, Stanford, CA. Also Tech. Rep. SMLI TR-96-52, Sun Microsystems, Santa Clara, CA (Jan. 1996). Google ScholarDigital Library
- Agesen, O. 1997. Design and implementation of Pep, a Java just-in-time translator. Theor. Prac. Obj. Syst. 3, 2, 127--155. Google ScholarDigital Library
- Agesen, O. and Hölzle, U. 1995. Type feedback vs. concrete type inference: A comparison of optimization techniques for object-oriented languages. In Proceedings of OOPSLA '95. 91--107. Google ScholarDigital Library
- Altman, E., Gschwind, M., Sathaye, S., Kosonocky, S., Bright, A., Fritts, J., Ledak, P., Appenzeller, D., Agricola, C., and Filan, Z. 2000a. BOA: The architecture of a binary translation processor. Tech. Rep. RC 21665, IBM Research Division, Yorktown Heights, NY.Google Scholar
- Altman, E. R., Kaeli, D., and Sheffer, Y. 2000b. Welcome to the opportunities of binary translation. IEEE Comput. 33, 3 (March), 40--45. Google ScholarDigital Library
- Armstrong, J. 1997. The development of Erlang. In Proceedings of ICFP '97 (1997). 196--203. Google ScholarDigital Library
- Auslander, J., Philipose, M., Chambers, C., Eggers, S. J., and Bershad, B. N. 1996. Fast, effective dynamic compilation. In Proceedings of PLDI '96. 149--159. Google ScholarDigital Library
- Azevedo, A., Nicolau, A., and Hummel, J. 1999. Java annotation-aware just-in-time (AJIT) compilation system. In Proceedings of JAVA '99. 142--151. Google ScholarDigital Library
- Bala, V., Duesterwald, E., and Banerjia, S. 1999. Transparent dynamic optimization. Tech. Rep. HPL-1999-77, Hewlett-Packard, Polo Alto, CA.Google Scholar
- Bartlett, J. 1992. Familiar Quotations (16th ed.). J. Kaplan, Ed. Little, Brown and Company, Boston, MA.Google Scholar
- Bell, J. R. 1973. Threaded code. Commun. ACM 16, 6 (June), 370--372. Google ScholarDigital Library
- Bentley, J. 1988. Little languages. In More Programming Pearls. Addison-Wesley, Reading, MA, 83--100.Google Scholar
- Bik, A. J. C., Girkar, M., and Haghighat, M. R. 1999. Experiences with Java JIT optimization. In Innovative Architecture for Future Generation High-Performance Processors and Systems. IEEE Computer Society Press, Los Alamitos, CA, 87--94.Google Scholar
- Brown, P. J. 1976. Throw-away compiling. Softw.---Pract. Exp. 6, 423--434.Google Scholar
- Brown, P. J. 1990. Writing Interactive Compilers and Interpreters. Wiley, New York, NY.Google Scholar
- Burger, R. G. 1997. Efficient compilation and profile-driven dynamic recompilation in scheme. Ph.D. dissertation, Indiana University, Bloomington, IN. Google ScholarDigital Library
- Burke, M. G., Choi, J.-D., Fink, S., Grove, D., Hind, M., Sarkar, V., Serrano, M. J., Sreedhar, V. C., and Srinivasan, H. 1999. The Jalape no dynamic optimizing compiler for Java. In Proceedings of JAVA '99. 129--141. Google ScholarDigital Library
- Cardelli, L. 1984. Compiling a functional language. In 1984 Symposium on Lisp and Functional Programming. 208--217. Google ScholarDigital Library
- Chambers, C. 1992. The design and implementation of the self compiler, an optimizing compiler for object-oriented programming languages. Ph.D. dissertation. Stanford University, Stanford, CA. Google ScholarDigital Library
- Chambers, C. and Ungar, D. 1989. Customization: optimizing compiler technology for Self, a dynamically-typed object-oriented programming language. In Proceedings of PLDI '89. 146--160. Google ScholarDigital Library
- Chambers, C. and Ungar, D. 1990. Iterative type analysis and extended message splitting: Optimizing dynamically-typed object-oriented programs. In Proceedings of PLDI '90. 150--164. Google ScholarDigital Library
- Chambers, C. and Ungar, D. 1991. Making pure object-oriented languages practical. In Proceedings of OOPSLA '91. 1--15. Google ScholarDigital Library
- Chambers, C., Ungar, D., and Lee, E. 1989. An efficient implementation of Self, a dynamically-typed object-oriented programming language based on prototypes. In Proceedings of OOPSLA '89. 49--70. Google ScholarDigital Library
- Chen, W.-K., Lerner, S., Chaiken, R., and Gillies, D. M. 2000. Mojo: a dynamic optimization system. In Proceedings of the Third ACM Workshop on Feedback-Directed and Dynamic Optimization (FDDO-3, Dec. 2000).Google Scholar
- Cierniak, M. and Li, W. 1997. Briki: an optimizing Java compiler. In Proceedings of IEEE COMPCON '97. 179--184. Google ScholarDigital Library
- Cmelik, B. and Keppel, D. 1994. Shade: A fast instruction-set simulator for execution profiling. In Proceedings of the 1994 Conference on Measurement and Modeling of Computer Systems. 128--137. Google ScholarDigital Library
- Consel, C., Hornof, L., Marlet, R., Muller, G., Thibault, S., Volanschi, E.-N., Lawall, J., and Noyé, J. 1998. Tempo: Specializing systems applications and beyond. ACM Comput. Surv. 30, 3 (Sept.), 5pp. Google ScholarDigital Library
- Consel, C. and Noël, F. 1996. A general approach for run-time specialization and its application to C. In Proceedings of POPL '96. 145--156. Google ScholarDigital Library
- Cramer, T., Friedman, R., Miller, T., Seberger, D., Wilson, R., and Wolczko, M. 1997. Compiling Java just in time. IEEE Micro 17, 3 (May/June), 36--43. Google ScholarDigital Library
- Dakin, R. J. and Poole, P. C. 1973. A mixed code approach. The Comput. J. 16, 3, 219--222.Google ScholarCross Ref
- Dawson, J. L. 1973. Combining interpretive code with machine code. The Comput. J. 16, 3, 216--219.Google ScholarCross Ref
- Deaver, D., Gorton, R., and Rubin, N. 1999. Wiggins/Redstone: An on-line program specializer. In Proceedings of the IEEE Hot Chips XI Conference (Aug. 1999). IEEE Computer Society Press, Los, Alamitos, CA.Google Scholar
- Deutsch, L. P. and Schiffman, A. M. 1984. Efficient implementation of the Smalltalk-80 system. In Proceedings of POPL '84. 297--302. Google ScholarDigital Library
- Dieckmann, S. and Hölzle, U. 1997. The space overhead of customization. Tech. Rep. TRCS 97-21. University of California, Santa Barbara, Santa Barbara, CA. Google ScholarDigital Library
- Ebcioğlu, K. and Altman, E. R. 1996. DAISY: Dynamic compilation for 100% architectural compatibility. Tech. Rep. RC 20538. IBM Research Division, Yorktown Heights, NY.Google Scholar
- Ebcioğlu, K. and Altman, E. R. 1997. Daisy: Dynamic compilation for 100% architectural compatibility. In Proceedings of ISCA '97. 26--37. Google ScholarDigital Library
- Engler, D. R. 1996. VCODE: a retargetable, extensible, very fast dynamic code generation system. In Proceedings of PLDI '96. 160--170. Google ScholarDigital Library
- Engler, D. R. and Hsieh, W. C. 2000. DERIVE: A tool that automatically reverse-engineers instruction encodings. In Proceedings of the ACM SIGPLAN Workshop on Dynamic and Adaptive Compilation and Optimization (Dynamo '00). 12--22. Google ScholarDigital Library
- Engler, D. R., Hsieh, W. C., and Kaashoek, M. F. 1996. C: A language for high-level, efficient, and machine-independent dynamic code generation. In Proceedings of POPL '96. 131--144. Google ScholarDigital Library
- Engler, D. R. and Proebsting, T. A. 1994. DCG: An efficient, retargetable dynamic code generation system. In Proceedings of ASPLOS VI. 263--272. Google ScholarDigital Library
- Franz, M. 1994. Code-generation on-the-fly: A key to portable software. Ph.D. dissertation. ETH Zurich, Zurich, Switzerland.Google Scholar
- Franz, M. and Kistler, T. 1997. Slim binaries. Commun. ACM 40, 12 (Dec.), 87--94. Google ScholarDigital Library
- Fraser, C. W. and Proebsting, T. A. 1999. Finite-state code generation. In Proceedings of PLDI '99. 270--280. Google ScholarDigital Library
- Gabriel, R. P. and Masinter, L. M. 1985. Performance and Evaluation of Lisp Systems. MIT Press, Cambridge, MA. Google ScholarDigital Library
- Geppert, L. and Perry, T. S. 2000. Transmeta's magic show. IEEE Spectr. 37, 5 (May), 26--33. Google ScholarDigital Library
- Goldberg, A. and Robson, D. 1985. Smalltalk-80: The Language and its Implementation. Addison-Wesley, Reading, MA. Google ScholarDigital Library
- Gorton, R. 2001. Private communication.Google Scholar
- Gosling, J. 2001. Private communication.Google Scholar
- Gschwind, M., Altman, E. R., Sathaye, S., Ledak, P., and Appenzeller, D. 2000. Dynamic and transparent binary translation. IEEE Comput. 33, 3, 54--59. Google ScholarDigital Library
- Hammond, J. 1977. BASIC---an evaluation of processing methods and a study of some programs. Softw.---Pract. Exp. 7, 697--711.Google Scholar
- Hansen, G. J. 1974. Adaptive systems for the dynamic run-time optimization of programs. Ph.D. dissertation. Carnegie-Mellon University, Pittsburgh, PA. Google ScholarDigital Library
- Haygood, R. C. 1994. Native code compilation in SICStus Prolog. In Proceedings of the Eleventh International Conference on Logic Programming. 190--204. Google ScholarDigital Library
- Hennessy, J. L. and Patterson, D. A. 1996. Computer Architecture: A Quantitative Approach, 2nd ed. Morgan Kaufmann, San Francisco, CA. Google ScholarDigital Library
- Hölzle, U. 1994. Adaptive optimization for Self: Reconciling high performance with exploratory programming. Ph.D. dissertation. Carnegie-Mellon University, Pittsburgh, PA.Google Scholar
- Hölzle, U. and Ungar, D. 1994a. Optimizing dynamically-dispatched calls with run-time type feedback. In Proceedings of PLDI '94. 326--336. Google ScholarDigital Library
- Hölzle, U. and Ungar, D. 1994b. A third-generation Self implementation: Reconciling responsiveness with performance. In Proceedings of OOPSLA '94. 229--243. Google ScholarDigital Library
- Ishizaki, K., Kawahito, M., Yasue, T., Takeuchi, M., Ogasawara, T., Suganuma, T., Onodera, T., Komatsu, H., and Nakatani, T. 1999. Design, implementation, and evaluation of optimizations in a just-in-time compiler. In Proceedings of JAVA '99. 119--128. Google ScholarDigital Library
- Johansson, E., Pettersson, M., and Sagonas, K. 2000. A high performance Erlang system. In Proceedings of PPDP '00. 32--43. Google ScholarDigital Library
- Johnston, R. L. 1977. The dynamic incremental compiler of APL&backslash;3000. In APL '79 Conference Proceedings. Published in APL Quote Quad 9, 4 (June), Pt. 1, 82--87. Google ScholarDigital Library
- Jones, N. D., Gomard, C. K., and Sestoft, P. 1993. Partial Evaluation and Automatic Program Generation. Prentice Hall, Englewood Cliffs, NJ. Google ScholarDigital Library
- Keppel, D. 1991. A portable interface for on-the-fly instruction space modification. In Proceedings of ASPLOS IV. 86--95. Google ScholarDigital Library
- Keppel, D., Eggers, S. J., and Henry, R. R. 1991. A case for runtime code generation. Tech. Rep. 91-11-04. Department of Computer Science and Engineering, University of Washington, Seattle, WA.Google Scholar
- Kistler, T. 1997. Dynamic runtime optimization. In Proceedings of the Joint Modular Languages Conference (JMLC '97). 53--66. Google ScholarDigital Library
- Kistler, T. 1999. Continuous program optimization. Ph.D. dissertation. University of California, Irvine, Irvine, CA. Google ScholarDigital Library
- Kistler, T. 2001. Private communication.Google Scholar
- Kistler, T. and Franz, M. 1999. The case for dynamic optimization: Improving memory-hierarchy performance by continuously adapting the internal storage layout of heap objects at run-time. Tech. Rep. 99-21 (May). University of California, Irvine, Irvine, CA. Revised September, 1999.Google Scholar
- Klaiber, A. 2000. The technology behind Crusoe processors. Tech. Rep. (Jan.), Transmeta Corporation, Santa Clara, CA.Google Scholar
- Knuth, D. E. 1971. An empirical study of Fortran programs. Softw.---Pract. Exp. 1, 105--133.Google Scholar
- Krall, A. 1998. Efficient JavaVM just-in-time compilation. In Proceedings of the 1998 International Conference on Parallel Architectures and Compilation Techniques (PACT '98). 205--212. Google ScholarDigital Library
- Krall, A. and Grafl, R. 1997. A Java just-in-time compiler that transcends JavaVM's 32 bit barrier. In Proceedings of PPoPP '97 Workshop on Java for Science and Engineering.Google Scholar
- Lee, P. and Leone, M. 1996. Optimizing ML with run-time code generation. In Proceedings of PLDI '96. 137--148. Google ScholarDigital Library
- Lee, S., Yang, B.-S., Kim, S., Park, S., Moon, S.-M., Ebcioğlu, K., and Altman, E. 2000. Efficient Java exception handling in just-in-time compilation. In Proceedings of Java 2000. 1--8. Google ScholarDigital Library
- Leone, M. and Dybvig, R. K. 1997. Dynamo: A staged compiler architecture for dynamic program optimization. Tech. Rep. 490. Computer Science Department, Indiana University, Bloomington, IN.Google Scholar
- Leone, M. and Lee, P. 1994. Lightweight run-time code generation. In Proceedings of the ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation. 97--106.Google Scholar
- Marlet, R., Consel, C., and Boinot, P. 1999. Efficient incremental run-time specialization for free. In PLDI '99. 281--292. Google ScholarDigital Library
- Mauriello, R. 2000. Private communication.Google Scholar
- May, C. 1987. Mimic: A fast System/370 simulator. In Proceedings of the SIGPLAN '87 Symposium on Interpreters and Interpretive Techniques (June). ACM Press, New York, NY, 1--13. Google ScholarDigital Library
- McCarthy, J. 1960. Recursive functions of symbolic expressions and their computation by machine, part I. Commun. ACM 3, 4, 184--195. Google ScholarDigital Library
- McCarthy, J. 1981. History of LISP. In History of Programming Languages, R. L. Wexelblat, Ed. Academic Press, New York, NY, 173--185. Google ScholarDigital Library
- Miller, T. C. 1977. Tentative compilation: A design for an APL compiler. In APL '79 Conference Proceedings. Volume 9 Published in APL Quote Quad 9, 4 (June), Pt. 1, 88--95. Google ScholarDigital Library
- Mitchell, J. G. 1970. The design and construction of flexible and efficient interactive programming systems. Ph.D. dissertation. Carnegie-Mellon University, Pittsburgh, PA. Google ScholarDigital Library
- Mitchell, J. G. 2000. Private communication.Google Scholar
- Mitchell, J. G., Perlis, A. J., and van Zoeren, H. R. 1968. LC2: A language for conversational computing. In Interactive Systems for Experimental Applied Mathematics, M. Klerer and J. Reinfelds, Eds. Academic Press, New York, NY. (Proceedings of 1967 ACM Symposium.)Google Scholar
- Mock, M., Berryman, M., Chambers, C., and Eggers, S. J. 1999. Calpa: A tool for automating dynamic compilation. In Proceedings of the Second ACM Workshop on Feedback-Directed and Dynamic Optimization. 100--109.Google Scholar
- Ng, T. S. and Cantoni, A. 1976. Run time interaction with FORTRAN using mixed code. The Comput. J. 19, 1, 91--92.Google ScholarCross Ref
- Pittman, T. 1987. Two-level hybrid interpreter/native code execution for combined space-time program efficiency. In Proceedings of the SIGPLAN Symposium on Interpreters and Interpretive Techniques. ACM Press, New York, NY, 150--152. Google ScholarDigital Library
- Piumarta, I. and Riccardi, F. 1998. Optimizing direct threaded code by selective inlining. In Proceedings of PLDI '98. 291--300. Google ScholarDigital Library
- Plezbert, M. P. and Cytron, R. K. 1997. Does "just in time" = "better late then never"? In Proceedings of POPL '97. 120--131. Google ScholarDigital Library
- Poletto, M., Engler, D. R., and Kaashoek, M. F. 1997. tcc: A system for fast, flexible, and high-level dynamic code generation. In Proceedings of PLDI '97. 109--121. Google ScholarDigital Library
- Ramsey, N. and Fernández, M. 1995. The New Jersey machine-code toolkit. In Proceedings of the 1995 USENIX Technical Conference. 289--302. Google ScholarDigital Library
- Rau, B. R. 1978. Levels of representation of programs and the architecture of universal host machines. In Proceedings of the 11th Annual Microprogramming Workshop (MICRO-11). 67--79. Google ScholarDigital Library
- Rémy, D., Leroy, X., and Weis, P. 1999. Objective Caml---a general purpose high-level programming language. ERCIM News 36, 29--30.Google Scholar
- Rosenblum, M., Herrod, S. A., Witchel, E., and Gupta, A. 1995. Complete computer system simulation: The SimOS approach. IEEE Parall. Distrib. Tech. 3, 4 (Winter), 34--43. Google ScholarDigital Library
- Schroeder, S. C. and Vaughn, L. E. 1973. A high order language optimal execution processor: Fast Intent Recognition System (FIRST). In Proceedings of a Symposium on High-Level-Language Computer Architecture. Published in SIGPLAN 8, 11 (Nov.), 109--116. Google ScholarDigital Library
- Sebesta, R. W. 1999. Concepts of Programming Languages (4th ed.). Addison-Wesley, Reading, MA. Google ScholarDigital Library
- Smith, R. B. and Ungar, D. 1995. Programming as an experience: The inspiration for Self. In Proceedings of ECOOP '95. Google ScholarDigital Library
- Sun Microsystems. 2001. The Java HotSpot virtual machine. White paper. Sun Microsystems, Santa Clara, CA.Google Scholar
- Thibault, S., Consel, C., Lawall, J. L., Marlet, R., and Muller, G. 2000. Static and dynamic program compilation by interpreter specialization. Higher-Order Symbol. Computat. 13, 161--178. Google ScholarDigital Library
- Thompson, K. 1968. Regular expression search algorithm. Commun. ACM 11, 6 (June), 419--422. Google ScholarDigital Library
- Transmeta Corporation. 2001. Code morphing software. Available online at http://www. transmeta.com/echnology/architecture/code_morphing.html. Transmeta Corporation, Santa Clara, CA.Google Scholar
- Tyma, P. 1998. Why are we using Java again? Commun. ACM 41, 6, 38--42. Google ScholarDigital Library
- Ung, D. and Cifuentes, C. 2000. Machine-adaptable dynamic binary translation. In Proceedings of Dynamo '00. 41--51. Google ScholarDigital Library
- Ungar, D. and Smith, R. B. 1987. Self: The power of simplicity. In Proceedings of OOPSLA '87. 227--242. Google ScholarDigital Library
- Ungar, D., Smith, R. B., Chambers, C., and Hölzle, U. 1992. Object, message, and performance: How they coexist in Self. IEEE Comput. 25, 10 (Oct.), 53--64. Google ScholarDigital Library
- University of Michigan. 1966a. The System Loader. In University of Michigan Executive System for the IBM 7090 Computer, Vol. 1. University of Michigan, Ann Arbor, MI.Google Scholar
- University of Michigan. 1966b. The "University of Michigan Assembly Program" ("UMAP"). In University of Michigan Executive System for the IBM 7090 Computer, Vol. 2. University of Michigan, Ann Arbor, MI.Google Scholar
- van Dyke, E. J. 1977. A dynamic incremental compiler for an interpretive language. Hewlett-Packard J. 28, 11 (July), 17--24.Google Scholar
- van Roy, P. 1994. The wonder years of sequential Prolog implementation. J. Logic Program. 19--20, 385--441.Google Scholar
- Wickline, P., Lee, P., and Pfenning, F. 1998. Run-time code generation and Modal-ML. In Proceedings of PLDI '98. 224--235. Google ScholarDigital Library
- Wirth, N. and Gutknecht, J. 1989. The Oberon system. Softw.---Pract. Exp. 19, 9 (Sep.), 857--893. Google ScholarDigital Library
- Yang, B.-S., Moon, S.-M., Park, S., Lee, J., Lee, S., Park, J., Chung, Y. C., Kim, S., Ebcioğlu, K., and Altman, E. 1999. LaTTe: A Java VM just-in-time compiler with fast and efficient register allocation. In Proceedings of the International Conference on Parallel Architectures and Compilation Techniques. 128--138. IEEE Computer Society Press, Los Alamitos, CA. Google ScholarDigital Library
- Zheng, C. and Thompson, C. 2000. PA-RISC to IA-64: Transparent execution, no recompilation. IEEE Comput. 33, 3 (March), 47--52. Google ScholarDigital Library
Index Terms
- A brief history of just-in-time
Recommendations
Bringing low-level languages to the JVM: efficient execution of LLVM IR on Truffle
VMIL 2016: Proceedings of the 8th International Workshop on Virtual Machines and Intermediate LanguagesAlthough the Java platform has been used as a multi-language platform, most of the low-level languages (such as C, Fortran, and C++) cannot be executed efficiently on the JVM. We propose Sulong, a system that can execute LLVM-based languages on the ...
Just-In-Time compilation on ARM processors
ICOOOLPS '09: Proceedings of the 4th workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming SystemsThis paper presents a Just-In-Time compilation system for ARM processors. The complete architecture is described, starting from static compilation of the sources into CIL (Common Intermediate Language) bytecode. The intermediate languages that are used ...
Compiling Java Just in Time
Early implementations of the Java(TM) programming language relied on byte code interpretation, leading to poor performance compared to compiled programs. More recent implementations have used just-in-time (JIT) compilation techniques to address some of ...
Comments