10.5555/781915.781940dlproceedingsArticle/Chapter ViewAbstractPublication PagescasconConference Proceedings
Article

The impact of interprocedural class analysis on optimization

ABSTRACT

The runtime performance of object-oriented languages often suffers due to the overhead of dynamic dispatching. In order to make these languages competitive with traditional languages, optimizing compilers attempt to eliminate as many of the dynamic dispatches as possible. A variety of local and intraprocedural techniques have been developed to do this, but they can be ineffective when they are unable to statically bind and inline a message send. To enable better analysis across noninlined message sends, interprocedural analysis is required. In this paper we describe a simple algorithm for interprocedural class analysis and empirically evaluate its effectiveness as a tool for program optimization. We demonstrate that interprocedural class analysis can substantially decrease application execution times when compared to applications optimized with only intraprocedural techniques.

References

  1. {Agesen & Höölzle 95} Ole Agesen and Urs Hölzle. Type Feedback vs. Concrete Type Analysis: A Comparison of Optimization Techniques for Object-Oriented Languages. In Proceedings OOPSLA '95, Austin, TX, October 1995.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. {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
  3. {Agesen et al. 93} Ole Agesen, Jens Palsberg, and Michael I. Schwartzback. Type Inference of SELF: Analysis of Objects with Dynamic and Multiple Inheritance. In Proceedings ECOOP '93, July 1993.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. {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
  5. {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
  6. {Chambers et al. 89} Craig Chambers, David Ungar, and Elgin Lee. An Efficient Implementation of SELF - a Dynamically-Typed Object-Oriented Language Based on Prototypes. In Proceedings OOPSLA '89, pages 49-70, October 1989. Published as ACM SIGPLAN Notices, volume 24, number 10.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. {Dean et al. 95} 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-Verlag.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. {Deutsch & Schiffman 84} L. Peter Deutsch and Allan M. Schiffman. Efficient Implementation of the Smalltalk-80 System. In Conference Record of the Eleventh Annual ACM Symposium on Principles of Programming Languages, pages 297-302, Salt Lake City, Utah, January 1984.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. {Grove et al. 95} David Grove, Jeffery Dean, Charles Garrett, and Craig Chambers. Profile-Guided Receiver Class Prediction. In Proceedings OOPSLA '95, Austin, TX, October 1995.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. {Hall & Kennedy 92} Mary W. Hall and Ken Kennedy. Efficient Call Graph Analysis. ACM Letters on Programming Languages and Systems, 1(3):227-242, September 1992.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. {Hölzle 94} Urs Hölzle. Adaptive Optimization for Self: Reconciling High Performance with Exploratory Programming. PhD thesis, Stanford University, August 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. {Oxhøj et al. 92} Nicholas Oxhøj, Jens Palsberg, and Michael I. Schwartzbach. Making Type Inference Practical. In O. Lehrmann Madsen, editor, Proceedings ECOOP '92, LNCS 615, pages 329-349, Utrecht, The Netherlands, July 1992. Springer-Verlag.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. {Palsberg & Schwartzbach 91} Jens Palsberg and Michael I. Schwartzbach. Object-Oriented Type Inference. In Proceedings OOPSLA '91, pages 146-161, November 1991. Published as ACM SIGPLAN Notices, volume 26, number 11.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. {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
  15. {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, Oregon, October 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. {Shivers 91} Olin Shivers. Control-Flow Analysis of Higher-Order Languages. PhD thesis, Carnegie Mellon University, May 1991. CMU-CS-91-145.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. {Steensgaard 94} Bjarne Steensgaard. A Polyvariant Closure Analysis with Dynamic Abstraction. Unpublished manuscript, 1994.]]Google ScholarGoogle Scholar

Index Terms

  1. The impact of interprocedural class analysis on optimization

        Comments

        Login options

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

        Sign in

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader
        About Cookies On This Site

        We use cookies to ensure that we give you the best experience on our website.

        Learn more

        Got it!