skip to main content
10.1145/236337.236344acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
Article
Free Access

Vortex: an optimizing compiler for object-oriented languages

Authors Info & Claims
Published:01 October 1996Publication History

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.

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. Aho et al 86.Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, Reading, MA, 1986.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle Scholar
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle Scholar
  17. Chien 93.Andrew A. Chien. Concurrent Aggregates (CA): Supporting Modularity in Massively-Parallel Programs. MIT Press, Cambridge, MA, 1993.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. EDG.C++ Front End 2.28. Provided by Edison Design Group, Inc. http://www.edg.com.]]Google ScholarGoogle Scholar
  24. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  25. Goldberg & Robson 83.Adele Goldberg and David Robson. Smalltalk-80: The Lanaguge and its Implementation. Addision-Wesley, Reading, MA, 1983.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Gosling et al 96.James Gosling, Bill Joy, and Guy Steele. The Java Language Specification. Addison-Wesley, Reading, MA, 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  28. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  29. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  30. JDK.Java Development Kit. Sun Microsystems Inc. http://java.sun.com/.]]Google ScholarGoogle Scholar
  31. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  32. Lea 90.Doug Lea. Customization in C++. In Proceedings of the 1990 Usenix C++ Conference, San Francisco, CA, April 1990.]]Google ScholarGoogle Scholar
  33. Nelson 91.Greg Nelson. Systems Programming with Modula-3. Prentice Hall, Englewood Cliffs, NJ, 1991.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  35. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  36. 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 ScholarGoogle Scholar
  37. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  38. 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 ScholarGoogle Scholar
  39. 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 ScholarGoogle Scholar
  40. Stroustrup 91.13jarne Stroustrup. The C++ Programming Language (second edition). Addision-Wesley, Reading, MA, 1991.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  42. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  43. Ungar & Smith 87.David Ungar and Randall B. Smith. Self: The Power of Simplicity. In Proceedings OOPSLA '87, pages 227- 242, December 1987.]] Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Vortex: an optimizing compiler for object-oriented languages

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in
      • Published in

        cover image ACM Conferences
        OOPSLA '96: Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
        October 1996
        458 pages
        ISBN:089791788X
        DOI:10.1145/236337

        Copyright © 1996 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 1 October 1996

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • Article

        Acceptance Rates

        Overall Acceptance Rate268of1,244submissions,22%

        Upcoming Conference

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader