ABSTRACT
Previously, techniques such as class hierarchy analysis and profile-guided receiver class prediction have been demonstrated to greatly improve the performance of applications written in pure object-oriented languages, but the degree to which these results are transferable to applications written in hybrid languages has been unclear. In part to answer this question, we have developed the Vortex compiler infrastructure, a language-independent optimizing compiler for object-oriented languages, with front-ends for Cecil, C++, Java, and Modula-3. In this paper, we describe the Vortex compiler's intermediate language, internal structure, and optimization suite, and then we report the results of experiments assessing the effectiveness of different combinations of optimizations on sizable applications across these four languages. We characterize the benchmark programs in terms of a collection of static and dynamic metrics, intended to quantify aspects of the "object-orientedness" of a program.
- Agesen & Hölzle 95.Ole Agesen and Urs H01zle. Type Feedback vs. Concrete Type Analysis: A Comparison of Optimization Techniques for Object-Oriented Languages. in OOPSLA'95 Conference Proceedings, pages 91-107, Austin, Tx, October 1995.]] Google ScholarDigital Library
- Agesen & Hölzle 96.Ole Agesen and Urs Hrlzle. Dynamic vs. Static Optimization Techniques for Object-Oriented Languages. Theory and Practice of Object Systems, 1(3), 1996.]] Google ScholarDigital Library
- Agesen 95.Ole Agesen. The Cartesian Product Algorithm: Simple and Precise Type Inference of Parametric Polymorphism. In Proceedings ECOOP '95, Aarhus, Denmark, August 1995. Springer-Verlag.]] Google ScholarDigital Library
- Aho et al 86.Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, Reading, MA, 1986.]] Google ScholarDigital Library
- Aigner & Hölzle 96.Gerald Aigner and Urs H01zle. Eliminating Virtual Function Calls in C++ Programs. In Proceedings ECOOP '96, Linz, Austria, August 1996. Springer-Verlag.]] Google ScholarDigital Library
- AK et al 89.Hassan AR-Kaci, Robert Boyer, Patrick Lincoln, and Roger Nasr. Efficient Implementation of Lattice Operations. ACM Transactions on Programming Languages and Systems, 11(1):115-146, January 1989.]] Google ScholarDigital Library
- Bacon & Sweeney 96.David F. Bacon and Peter F. Sweeney. Fast Static Analysis of C++ Virtual Function Calls. In OOPS- LA'96 Conference Proceedings, San Jose, CA, October 1996.]] Google ScholarDigital Library
- Bieman & Zhao 95.James M. Bieman and Josephine Xia Zhao. Reuse Through Inheritance: A Quantitative Study of C++ Software. In Proceedings of the Symposium on Software Reusability. ACM SIGSOFT, August 1995. Software Engineering Notes.]] Google ScholarDigital Library
- Bobrow et al 88.D. G. Bobrow, L. G. DeMichiel, R. P. Gabriel, S. E. Keene, G. Kiczales, and D. A. Moon. Common Lisp Object System Specification X3J13. SIGPLAN Notices, 28(SpeciaI Issue), September 1988.]] Google ScholarDigital Library
- Calder & Grunwald 94.Brad Calder and Dirk Grunwald. Reducing Indirect Function Call Overhead in C++ Programs. In Conference Record of POPL '94: 21st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 397-408, Portland, Oregon, January 1994.]] Google ScholarDigital Library
- Chambers & Ungar 89.Craig Chambers and David Ungar. Customization: Optimizing Compiler Technology for Self, A Dynamically-Typed Object-Oriented Programming Language. SIGPLAN Notices, 24(7): 146-160, July 1989. In Proceedings of the A CM SIGPLAN '89 Conference on Programming Language Design and Implementation.]] Google ScholarDigital Library
- Chambers & Ungar 90.Craig Chambers and David Ungar. Iterative Type Analysis and Extended Message Splitting: Optimizing Dynamically-Typed Object-Oriented Programs. SIGPLAN Notices, 25(6): 150-164, June 1990. In Proceedings of the ACM SIGPLAN '90 Conference on Programming Language Design and Implementation.]] Google ScholarDigital Library
- Chambers 92.Craig Chambers. Object-Oriented Multi-Methods in Cecil. in O. Lehrmann Madsen, editor, Proceedings ECOOP '92, LNCS 615, pages 33-56, Utrecht, The Netherlands, June 1992. Springer-Verlag.]] Google ScholarDigital Library
- Chambers 93.Craig Chambers. The Cecil Language: Specification and Rationale. Technical Report TR-93-03-05, Department of Computer Science and Engineering. University of Washington, March 1993.]]Google Scholar
- Chambers et al 95.Craig Chambers, Jeffrey Dean, and David Grove. A Framework for Selective Recompilation in the Presence of Complex Intermodule Dependencies. In 17th International Conference on Software Engineering, Seattle, WA, April 1995.]] Google ScholarDigital Library
- Chambers et al 96.Craig Chambers, Jeffrey Dean, and David Grove. Whole-Program Optimization of Object-Oriented Languages. Technical Report TR-96-06-02, Department of Computer Science and Engineering. University of Washington, June 1996.]]Google Scholar
- Chien 93.Andrew A. Chien. Concurrent Aggregates (CA): Supporting Modularity in Massively-Parallel Programs. MIT Press, Cambridge, MA, 1993.]] Google ScholarDigital Library
- Click & Cooper 95.Cliff Click and Keith D. Cooper. Combining Analyses, Combining Optimizations. A CM Transactions on Programming Languages and Systems, 17(2): 181-196, March 1995.]] Google ScholarDigital Library
- Dean et al 95a.Jeffrey Dean, Craig Chambers, and David Grove. Selective Specialization for Object-Oriented Languages. SIGPLAN Notices, pages 93-102, June 1995. In Proceedings of the A CM SIGPLAN '95 Conference on Programming Language Design and Implementation.]] Google ScholarDigital Library
- Dean et al 95b.Jeffrey Dean, David Grove, and Craig Chambers. Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis. In Proceedings ECOOP '95, Aarhus, Denmark, August 1995. Springer-Ver|ag.]] Google ScholarDigital Library
- Deutsch & Schiffman 84.L. Peter Deutsch and Allan M. Schiffman. Efficient Implementation of the Smalltalk-80 System. In Conference Record of the Eleventh Annual A CM Symposium on Principles of Programming Languages, pages 297-302, Salt Lake City, Utah, January 1984.]] Google ScholarDigital Library
- Diwan et al 96.Amer Diwan, Eliot Moss, and Kathryn McKinley. Simple and Effective Analysis of Statically-typed Object- Oriented Programs. In OOPSLA'96 Conference Proceedings, San Jose, CA, October 1996.]] Google ScholarDigital Library
- EDG.C++ Front End 2.28. Provided by Edison Design Group, Inc. http://www.edg.com.]]Google Scholar
- Fernandez 95.Mary Fernandez. Simple and Effective Link-time Optimization of Modula-3 Programs. SIGPLAN Notices, pages 103-115, June 1995. In Proceedings of the ACM SIGPLAN "95 Conference on Programming Language Design and Implementation.]] Google ScholarDigital Library
- Goldberg & Robson 83.Adele Goldberg and David Robson. Smalltalk-80: The Lanaguge and its Implementation. Addision-Wesley, Reading, MA, 1983.]] Google ScholarDigital Library
- Gosling et al 96.James Gosling, Bill Joy, and Guy Steele. The Java Language Specification. Addison-Wesley, Reading, MA, 1996.]] Google ScholarDigital Library
- Grove et al 95.David Grove, Jeffrey Dean, Charles Garrett, and Craig Chambers. Profile-Guided Receiver Class Prediction. In OOPSLA '95 Conference Proceedings, pages 108-123, Austin, TX, October 1995.]] Google ScholarDigital Library
- Hölzle & Ungar 94.Urs H01zle and David Ungar. Optimizing Dynamically-Dispatched Calls with Run-Time Type Feedback. SIGPLAN Notices, 29(6):326--336, June 1994. In Proceedings of the ACM SIGPLAN '94 Conference on Programming Language Design and Implementation.]] Google ScholarDigital Library
- Hölzle et al 91.Urs H61zle, Craig Chambers, and David Ungar. Optimizing Dynamically-Typed Object-Oriented Languages With Polymorphic Inline Caches. In P. America, editor, Proceedings ECOOP '91, LNCS 512, pages 21-38, Geneva, Switzerland, July 15-19 1991. Springer-Verlag.]] Google ScholarDigital Library
- JDK.Java Development Kit. Sun Microsystems Inc. http://java.sun.com/.]]Google Scholar
- Johnson 88.Ralph Johnson. TS: AN Optimizing Compiler for Smalltalk. In Proceedings OOPSLA '88, pages 18-26, November 1988. Published as ACM SIGPLAN Notices, volume 23, number 11.]] Google ScholarDigital Library
- Lea 90.Doug Lea. Customization in C++. In Proceedings of the 1990 Usenix C++ Conference, San Francisco, CA, April 1990.]]Google Scholar
- Nelson 91.Greg Nelson. Systems Programming with Modula-3. Prentice Hall, Englewood Cliffs, NJ, 1991.]] Google ScholarDigital Library
- Pande & Ryder 94.Hemant D. Pande and Barbara G. Ryder. Static Type Determination for C++. In Proceedings of Sixth USENIX C+ + Technical Conference, 1994.]] Google ScholarDigital Library
- Plevyak & Chien 94.John Plevyak and Andrew A. Chien. Precise Concrete Type Inference for Object-Oriented Languages. In Proceedings OOPSLA '94, pages 324-340, Portland, OR, October 1994.]] Google ScholarDigital Library
- Schaffert et al 85.Craig Schaffert, Topher Cooper, and Carrie Wilpolt. Trellis Object-Based Environment, Language Reference Manual. Technical Report DEC-TR-372, Digital Equipment Corporation, November 1985.]]Google Scholar
- Shao & Appel 95.Zhong Shao and Andrew Appel. A type-based compiler foor Standard ML. SIGPLAN Notices, pages 116- 129, June 1995. In Proceedings of the ACM SIGPLAN '95 Conference on Programming Language Design and Implementation.]] Google ScholarDigital Library
- SRC.DEC SRC Modula-3 Implementation. Digital Equipment Corporation Systems Research Center. http://www.research, di gi t al. co m/SRC/mo dula- 3/html/home.html.]]Google Scholar
- Stroustrup 87.Bjarne Stroustrup. Multiple Inheritance for C++. In In Proceedings of the European Unix Users Group Conference '87, pages 189-207, Helsinki, Finland, May 1987.]]Google Scholar
- Stroustrup 91.13jarne Stroustrup. The C++ Programming Language (second edition). Addision-Wesley, Reading, MA, 1991.]] Google ScholarDigital Library
- Tarditi et al 96.David Tarditi, Greg Morrisett, Perry Cheng, Chris Stone, Bob Harper, and Peter Lee. TIL: A Type-Directed Compiler for ML. SIGPLAN Notices, pages 181-192, May 1996. In Proceedings of the A CM SIGPLAN '96 Conference on Programming Language Design and Implementation.]] Google ScholarDigital Library
- Tjiang & Hennessy 92.Steven W. K. Tjiang and John L. Hennessy. Sharlit - A Tool for Building Optimizers. SIGPLAN Notices, 27(7):82-93, July 1992. In Proceedings of the ACM SIGPLAN '92 Conference on Programming Language Design and Implementation.]] Google ScholarDigital Library
- Ungar & Smith 87.David Ungar and Randall B. Smith. Self: The Power of Simplicity. In Proceedings OOPSLA '87, pages 227- 242, December 1987.]] Google ScholarDigital Library
Index Terms
- Vortex: an optimizing compiler for object-oriented languages
Recommendations
Vortex: an optimizing compiler for object-oriented languages
Previously, techniques such as class hierarchy analysis and profile-guided receiver class prediction have been demonstrated to greatly improve the performance of applications written in pure object-oriented languages, but the degree to which these ...
Layout-sensitive language extensibility with SugarHaskell
Haskell '12: Proceedings of the 2012 Haskell SymposiumProgrammers need convenient syntax to write elegant and concise programs. Consequently, the Haskell standard provides syntactic sugar for some scenarios (e.g., do notation for monadic code), authors of Haskell compilers provide syntactic sugar for more ...
Layout-sensitive language extensibility with SugarHaskell
Haskell '12Programmers need convenient syntax to write elegant and concise programs. Consequently, the Haskell standard provides syntactic sugar for some scenarios (e.g., do notation for monadic code), authors of Haskell compilers provide syntactic sugar for more ...
Comments