Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article
Free access

Vortex: an optimizing compiler for object-oriented languages

Published: 01 October 1996 Publication History
  • Get Citation Alerts
  • 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]
    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.]]
    [2]
    Ole Agesen and Urs Hrlzle. Dynamic vs. Static Optimization Techniques for Object-Oriented Languages. Theory and Practice of Object Systems, 1(3), 1996.]]
    [3]
    Ole Agesen. The Cartesian Product Algorithm: Simple and Precise Type Inference of Parametric Polymorphism. In Proceedings ECOOP '95, Aarhus, Denmark, August 1995. Springer-Verlag.]]
    [4]
    Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, Reading, MA, 1986.]]
    [5]
    Gerald Aigner and Urs H01zle. Eliminating Virtual Function Calls in C++ Programs. In Proceedings ECOOP '96, Linz, Austria, August 1996. Springer-Verlag.]]
    [6]
    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.]]
    [7]
    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.]]
    [8]
    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.]]
    [9]
    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.]]
    [10]
    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.]]
    [11]
    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.]]
    [12]
    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.]]
    [13]
    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.]]
    [14]
    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.]]
    [15]
    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.]]
    [16]
    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.]]
    [17]
    Andrew A. Chien. Concurrent Aggregates (CA): Supporting Modularity in Massively-Parallel Programs. MIT Press, Cambridge, MA, 1993.]]
    [18]
    Cliff Click and Keith D. Cooper. Combining Analyses, Combining Optimizations. A CM Transactions on Programming Languages and Systems, 17(2): 181-196, March 1995.]]
    [19]
    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.]]
    [20]
    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.]]
    [21]
    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.]]
    [22]
    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.]]
    [23]
    C++ Front End 2.28. Provided by Edison Design Group, Inc. http://www.edg.com.]]
    [24]
    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.]]
    [25]
    Adele Goldberg and David Robson. Smalltalk-80: The Lanaguge and its Implementation. Addision-Wesley, Reading, MA, 1983.]]
    [26]
    James Gosling, Bill Joy, and Guy Steele. The Java Language Specification. Addison-Wesley, Reading, MA, 1996.]]
    [27]
    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.]]
    [28]
    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.]]
    [29]
    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.]]
    [30]
    Java Development Kit. Sun Microsystems Inc. http://java.sun.com/.]]
    [31]
    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.]]
    [32]
    Doug Lea. Customization in C++. In Proceedings of the 1990 Usenix C++ Conference, San Francisco, CA, April 1990.]]
    [33]
    Greg Nelson. Systems Programming with Modula-3. Prentice Hall, Englewood Cliffs, NJ, 1991.]]
    [34]
    Hemant D. Pande and Barbara G. Ryder. Static Type Determination for C++. In Proceedings of Sixth USENIX C+ + Technical Conference, 1994.]]
    [35]
    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.]]
    [36]
    Craig Schaffert, Topher Cooper, and Carrie Wilpolt. Trellis Object-Based Environment, Language Reference Manual. Technical Report DEC-TR-372, Digital Equipment Corporation, November 1985.]]
    [37]
    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.]]
    [38]
    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.]]
    [39]
    Bjarne Stroustrup. Multiple Inheritance for C++. In In Proceedings of the European Unix Users Group Conference '87, pages 189-207, Helsinki, Finland, May 1987.]]
    [40]
    13jarne Stroustrup. The C++ Programming Language (second edition). Addision-Wesley, Reading, MA, 1991.]]
    [41]
    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.]]
    [42]
    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.]]
    [43]
    David Ungar and Randall B. Smith. Self: The Power of Simplicity. In Proceedings OOPSLA '87, pages 227- 242, December 1987.]]

    Cited By

    View all
    • (2016)Supporting Program Analysis for Non-Mainstream Languages: Experiences and Lessons Learned2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER)10.1109/SANER.2016.15(460-469)Online publication date: Mar-2016
    • (2015)Exploiting array manipulation habits to optimize garbage collection and type flow analysisSoftware—Practice & Experience10.1002/spe.230045:12(1639-1657)Online publication date: 1-Dec-2015
    • (2007)Design and implementation of a comprehensive real-time java virtual machineProceedings of the 7th ACM & IEEE international conference on Embedded software10.1145/1289927.1289967(249-258)Online publication date: 30-Sep-2007
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 31, Issue 10
    Oct. 1996
    443 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/236338
    Issue’s Table of Contents
    • 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
    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: 01 October 1996
    Published in SIGPLAN Volume 31, Issue 10

    Check for updates

    Qualifiers

    • Article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)105
    • Downloads (Last 6 weeks)22
    Reflects downloads up to 26 Jul 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2016)Supporting Program Analysis for Non-Mainstream Languages: Experiences and Lessons Learned2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER)10.1109/SANER.2016.15(460-469)Online publication date: Mar-2016
    • (2015)Exploiting array manipulation habits to optimize garbage collection and type flow analysisSoftware—Practice & Experience10.1002/spe.230045:12(1639-1657)Online publication date: 1-Dec-2015
    • (2007)Design and implementation of a comprehensive real-time java virtual machineProceedings of the 7th ACM & IEEE international conference on Embedded software10.1145/1289927.1289967(249-258)Online publication date: 30-Sep-2007
    • (2006)Compiling Java to a typed lambda-calculus: A preliminary reportTypes in Compilation10.1007/BFb0055510(9-27)Online publication date: 28-May-2006
    • (2006)Loop transformations in the ahead-of-time optimization of java bytecodeProceedings of the 15th international conference on Compiler Construction10.1007/11688839_11(109-123)Online publication date: 30-Mar-2006
    • (2005)Automatically Reducing Repetitive Synchronization with a Just-in-Time Compiler for JavaProceedings of the international symposium on Code generation and optimization10.1109/CGO.2005.7(27-36)Online publication date: 20-Mar-2005
    • (2004)Java-through-C CompilationProceedings of the conference on Design, automation and test in Europe - Volume 310.5555/968880.969233Online publication date: 16-Feb-2004
    • (2004)Java-through-C compilation: an enabling technology for Java in embedded systemsProceedings Design, Automation and Test in Europe Conference and Exhibition10.1109/DATE.2004.1269224(161-166)Online publication date: 2004
    • (2003)Pragmatic aspects of reusable program generatorsJournal of Functional Programming10.1017/S095679680200462813:3(601-646)Online publication date: 1-May-2003
    • (2001)A framework for call graph construction algorithmsACM Transactions on Programming Languages and Systems10.1145/506315.50631623:6(685-746)Online publication date: 1-Nov-2001
    • Show More Cited By

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Get Access

    Login options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media