ABSTRACT
Intense research on virtual machines has highlighted the need for flexible software architectures that allow quick evaluation of new design and implementation techniques. The interface between the compiler and runtime system is a principal factor in the flexibility of both components and is critical to enabling rapid pursuit of new optimizations and features. Although many virtual machines have demonstrated modularity for many components, significant dependencies often remain between the compiler and the runtime system components such as the object model and memory management system. This paper addresses this challenge with a carefully designed strict compiler-runtime interface and the XIR language. Instead of the compiler backend lowering object operations to machine operations using hard-wired runtime-specific logic, XIR allows the runtime system to implement this logic, simultaneously simplifying and separating the backend from runtime-system details. In this paper we describe the design and implementation of this compiler-runtime interface and the XIR language in the C1X dynamic compiler, a port of the HotSpotTM Client compiler. Our results show a significant reduction in backend complexity with XIR and an overall reduction in the compiler-runtime interface complexity while still generating comparable quality code with only minor impact on compilation time.
- Jikes RVM. http://jikesrvm.orgGoogle Scholar
- The Maxine VM. http://kenai.com/projects/maxineGoogle Scholar
- M. Arnold, S. Fink, V. Sarkar, and P.F. Sweeney. A Comparative Study of Static and Profile-Based Heuristics for Inlining. In Dynamic and Adaptive Compilation and Optimization (Dynamo '00). Boston, MA. January 2000. Google ScholarDigital Library
- M. Arnold and D. Grove. Collecting and Exploiting High-Accuracy Call-Graph Profiles in Virtual Machines. In International Symposium on Code Generation and Optimization (CGO '05). San Jose CA. March 2005. Google ScholarDigital Library
- D. Ancona, M. Ancona, A Cuni, and N. Matsakis. RPython: a Step Towards Reconciling Dynamically and Statically Typed OO Languages. In Dynamic Languages Symposium (DSL '07). Montreal, Canada. October 2007. Google ScholarDigital Library
- D. Bacon, S. Fink, and D. Grove. Space- and Time-efficient Implementation of the Java Object Model. In ECOOP '02, the 16th European Conference on Object-Oriented Programming, University of Malaga, Spain. June 2002. Google ScholarDigital Library
- Blackburn, S. M., Garner, R., Hoffman, C., Khan, A. M., McKinley, K. S., Bentzur, R., Diwan, A., Feinberg, D., Frampton, D., Guyer, S. Z., Hirzel, M., Hosking, A., Jump, M., Lee, H., Moss, J. E. B., Phansalkar, A., Stefanovic, D., VanDrunen, T., von Dincklage, D., and Wiedermann, B. The DaCapo Benchmarks: Java Benchmarking Development and Analysis. In Object Oriented Programming, Systems, Languages, and Applications (OOPSLA '06). Portland, OR. October 2006. Google ScholarDigital Library
- C. Bolz and A. Rigo. How not to write Virtual Machines for Dynamic Languages. In Dynamic Languages and Applications (DYLA '07). Berlin, Germany. July 2007.Google Scholar
- M. Cierniak, N. Glew, S. Triantafyllis, M. Eng, B. Lewis, and J. Stichnoth. Object-Model Independence with Code Implants. In Multiparadigm Programming with Object Oriented Languages (MPOOL '03). Anaheim, CA. October 2003.Google Scholar
- C. Click and M. Paleczny. A Simple Graph-based Intermediate Representation. In ACM SIGPLAN Workshop on Intermediate Representations. San Francisco, CA. January 1995. Google ScholarDigital Library
- J. Dean, D. Grove, and C. Chambers. Optimization of Object-Oriented Programs using Static Class Hierarchy Analysis. In ECOOP '95, the 9th European Conference on Object-Oriented Programming. Aarhus, Denmark. August 1995. Google ScholarDigital Library
- A. Diwan, K. McKinley, and J. E. Moss. Using Types to Analyze and Optimize Object-Oriented Programs. In ACM Transactions on Programming Languages and Systems, 23(1), 30--72. 2001. Google ScholarDigital Library
- D. Frampton, S. Blackburn, P. Cheng, R. Garner, D. Grove, J. Moss, S. Salishev. Demystifying magic: high-level low-level programming. In Virtual Execution Environments (VEE '09). Washington, DC. March 2009. Google ScholarDigital Library
- N. Glew, S. Triantafyllis, M. Cierniak, M. Eng, B. Lewis and J. Stichnoth. LIL: An Architecture--Neutral Language for Virtual-Machine Stubs. In 3rd Virtual Machine Research and Technology Symposium. San Jose, CA. May 2004. Google ScholarDigital Library
- K. Hazelwood and D. Grove. Adaptive online context-sensitive inlining. In International Symposium on Code Generation and Optimization (CGO '03). San Francisco, CA. March, 2003. Google ScholarDigital Library
- D. Ingalls, T. Kaehler, J. Maloney, S. Wallace, and A. Kay. Back to the future: the story of Squeak, a practical Smalltalk written in itself. In Object Oriented Systems, Languages, and Applications (OOPSLA '97). Atlanta, GA. October 1997. Google ScholarDigital Library
- K. Ishizaki, M. Kawahito, T. Yasue, H. Komatsu, T. Nakatani. A Study of Devirtualization Techniques for a Java Just-in-time Compiler. In OOPSLA '00, the 15th Annual Conference on Object-Oriented Systems, Languages, and Applications. Minneapolis, MN. October 2000. Google ScholarDigital Library
- T. Kotzmann, C. Wimmer, H. Mossenbock, T. Rodriguez, K. Russell, and D. Cox. Design of the Java HotSpotTM client compiler for Java 6. In ACM Transactions on Architecture and Code Optimization (TACO), Volume 5, Issue 1. May 2008. Google ScholarDigital Library
- M. Paleczny, C. Vick, and C. Click. The JavaTM HotSpot Server Compiler. In JVM '01. Monterey CA. April 2001. Google ScholarDigital Library
- A. Rigo and S. Pedroni. PyPy's Approach to Virtual Machine Construction. In Dynamic Languages Symposium (DSL '06). Portland, OR. October 2006.Google ScholarDigital Library
- D. Ungar, A. Spitz, and A. Ausch. Constructing a meta-circular virtual machine in an exploratory programming environment. In Object Oriented Systems, Languages, and Applications (OOPSLA '05). San Diego, CA. October 2005. Google ScholarDigital Library
- D. Weise, R. Crew, M. Ernst, and B. Steensgaard. Value Dependency Graphs: Representation without Taxation. In Principles of Programming Languages (POPL '94). Portland, OR. January 1994. Google ScholarDigital Library
- C. Wimmer. Linear Scan register allocation for the Java HotSpot client compiler. Master's thesis, Institute for Systems Software, Johannes Kepler University Linz. 2004.Google Scholar
- G. Wright, M. Seidl, and M. Wolczko. An object-aware memory architecture. Science of Computer Programming 62(2): 145--163 (2006). Google ScholarDigital Library
- T. Wuerthinger, C. Wimmer, and H. Mossenbock. Array bounds check elimination in the context of deoptimization. In Science of Computer Programming, Volume 74, Issue 5-6. March 2009. Google ScholarDigital Library
Index Terms
- Improving compiler-runtime separation with XIR
Recommendations
Improving compiler-runtime separation with XIR
VEE '10Intense research on virtual machines has highlighted the need for flexible software architectures that allow quick evaluation of new design and implementation techniques. The interface between the compiler and runtime system is a principal factor in the ...
Extending the graal compiler to optimize libraries
OOPSLA '11: Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companionThe Graal compiler is an optimizing just-in-time compiler written in Java that works with both the Maxine VM and the HotSpot VM. It allows Java libraries to extend its functionality for example by providing new intermediate representation nodes and new ...
Mixing source and bytecode: a case for compilation by normalization
Language extensions increase programmer productivity by providing concise, often domain-specific syntax, and support for static verification of correctness, security, and style constraints. Language extensions can often be realized through translation ...
Comments