10.1145/178243.178478acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
Article
Free Access

Optimizing dynamically-dispatched calls with run-time type feedback

Published:01 June 1994Publication History
First page image

References

  1. APS93.Ole Agesen, Jens Palsberg, and Michael I. Schwartzbach. Type Inference of SELF: Analysis of Objects with Dynamic and Multiple Inheritance. In ECOOP '93 Conference Proceedings, p. 247-267. Kaiserslautern, Germany, July 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. App88.Apple Computer, Inc. Object Pascal User's Manual. Cupertino, 1988.Google ScholarGoogle Scholar
  3. CGZ94.Brad Calder, Dirk Grunwald, and Benjamin Zorn. Quantifying Behavioral Differences Between C and C++ Programs. Technical Report CU-CS~698-94, University of Colorado, Boulder, January 1994.Google ScholarGoogle Scholar
  4. CG94.Brad Calder and Dirk Grunwald. Reducing Indirect Function Call Overhead in C++ Programs. In 21st Annual A CM Symposium on Principles of Programming Languages, p. 397-408, January 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Cha92.Craig Chambers, The Design and Implementation of the SELF Compiler, an Optimizing Compiler for Object- Oriented Programming Languages. Ph.D. Thesis, Stanford University, April 1992 Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Cha93.Craig Chambers. The Cecil Language - Specification and Rationale. Technical Report CSE-TR-93-03-05, University of Washington, 1993.Google ScholarGoogle Scholar
  7. CUL89.Craig Chambers, David Ungar, and Elgin Lee. An Efficient Implementation of SELF, a Dynamically-Typed Object-Oriented Language Based on Prototypes. in OOPSLA '89 Conference Proceedings, p. 49-70, New Orleans, LA, October 1989. Published as SIGPLAN Notices 24(i 0), October 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. CU90.Craig Chambers and David Ungar. Iterative Type Analysis and Extended Message Splitting: Optimizing Dynamically-Typed Object-Oriented Programs. In Proceedings of the SIGPLAN '90 Conference on Programming Language Design and Implementation, p. 150-164, White Plains, NY, June 1990. Published as SIGPLAN Notices 25(6), June 1990. Google ScholarGoogle Scholar
  9. CU93.Bay-Wei Chang and David Ungar. Animation: From cartoons to the user interface. User Interface Software and Technology Conference Proceedings, Atlanta, GA, November 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. CM+92.Pohua P. Chang, Scott A. Mahlke, William Y. Chen, and Wen-Mei W. Hwu. Profile-guided automatic inline expansion for C programs. Software--Practice and Experience 22 (5): 349-369, May 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. CK93.Robert F. Cmelik and David Keppel. Shade: A Fast Instruction-Set Simulator for Execution Profiling. Technical Report SMLI TR-93-12, Sun Microsystems Laboratories, 1993. Also published as Technical Report CSE- TR-93-06-06, University of Washington, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. CHT91.K.D. Cooper, M. W. Hall, and L. Torczon. An experiment with inline substitution. Software--Practice and Experience 21 (6): 581-601, June 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. DH88.Jack W. Davidson and Anne M. Holler. A study of a C function inliner. Software--Practice and Experience 18(8): 775-90, August 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. DS84.L. Peter Deutsch and Alan Schiffman. Efficient }Implementation of the Smantalk-80 System. Proceedings of the 11th Symposium on the Principles of Programming Languages, Salt Lake City, UT, 1984. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. DTM94.Amer Diwan, David Tarditi, and Eliot Moss. Memory Subsystem Performance of Programs with Intensive Heap Allocation. In 21st Annual ACM Symposium on Principles of Programming Languages, p. 1-14, January 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Dri93.Karel Driesen. Selector Table Indexing and Sparse Arrays. OOPSLA '93 Conference Proceedings, p. 259- 270, Washington, D.C., 1993. Published as SiGPLAN Notices 28(10), September 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Dyk77.Eric J. Van Dyke. A dynamic incremental compiler for an interpretative language. HP Journal, p. 17-24, July 1977.Google ScholarGoogle Scholar
  18. G+94.Charles D. Garret, Jeffrey Dean, David Grove, and Craig Chambers. Measurement and Application of Dynamic Receiver Class Distributions. Technical Report CSE-TR-94-03-05, University of Washington, February 1994.Google ScholarGoogle Scholar
  19. GKM83.S. L. Graham, P. B. Kessler, and M. K. McKusick. An Execution Profiler for Modular Programs. Softwaret Practice and Experience 13:671-685, 1983.Google ScholarGoogle ScholarCross RefCross Ref
  20. GW78.Leo J. Guibas and Douglas K. Wyatt. Compilation and Delayed Evaluation in APL. In Fifth Annual A CM Symposium on Principles of Programming Languages, p. 1-8, 1978. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Hall91.Mary Wolcott Hall. Managing Interprocedural Optimization. Technical Report COMP TR91-157 (Ph.D. Thesis), Computer Science Department, Rice University, April 1991.Google ScholarGoogle Scholar
  22. Hill87.Mark D. Hill. Aspects of Cache Memory and Instruction Buffer Performance. Technical Report UCB/CSD 87/ 381, Computer Science Division, University of California, Berkeley, November 1987. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. HCU91.Urs H6Izle, Craig Chambers, and David Ungar. Optimizing Dynamically-Typed Object-Oriented Languages with Polymorphic Inline Caches. In ECOOP'91 Conference Proceedings, Geneva, 1991. Published as Springer Verlag Lecture Notes in Computer Science 512, Springer Verlag, Berlin, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. HCU92.Urs H61zle, Craig Chambers, and David Ungar. Debugging Optimized Code With Dynamic Deoptimization. In Proceedings of the SIGPLAN '92 Conference on Programming Language Design and Implementation, p. 21-38, San Francisco, 1992. Published as SIGPLAN Notices 27(6), June 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Hö94.Urs HOlzle. Adaptive Optimization for SELF: Reconciling High Performance with Exploratory Programming. Ph.D. Thesis, Stanford University, Computer Science Department, 1994. (In preparation.) Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. HwC89.W.W. Hwu and P. P. Chang. Inline function expansion for compiling C programs. In Proceedings of the SIGPLAN '89 Conference on Programming Language Design and Implementation, p. 246-57, Portland, OR, June 1989. Published as SIGPLAN Notices 24(7), July 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Irl91.Gordon Irlam. SPA--SPARC analyzer tool set. Available via ftp from cs.adelaide.edu.au, 1991.Google ScholarGoogle Scholar
  28. Joh79.Ronald L. Johnston. The Dynamic Incremental Compiler of APL\3000. In Proceedings of the APL '79 Conference. Published as APL Quote Quad 9(4), p. 82- 87, 1979. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. KLS92.Philip Koopman, Peter Lee, and Daniel Siewiorek. Cache behavior of combinator graph reduction. ACM Transactions on Programming Languages and Systems 14 (2):265-297, April 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. LVC89.Mark Linton, John Vlissides, and Paul Calder. Composing User Interfaces with Interviews. IEEE Computer 22(2):8-22, February 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Mit70.J.G. Mitchell, Design and Construction of Flexible and Efficient Interactive Programming Systems. Ph.D. Thesis, Carnegie-Mellon University, 1970. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. PR94.Hemant D. Pande and Barbara G. Ryder. Static Type Determination for C++. Technical Report LCSR-TR- 197a, Rutgers University, 1994.Google ScholarGoogle Scholar
  33. Rei93.Mark Reinhold. Cache Performance of Garbage- Collected Programming Languages. Technical Report MIT/LCS/TR-581 (Ph.D. Thesis), Massachusetts Institute of Technology, September 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. SM+93.Michael Sannella, John Maloney, Bjom Freeman- Benson, and Alan Boming. Multi-way versus One-way Constraints in User Interfaces: Experience with the DeltaBlue Algorithm. Software~Practice and Experience 23 (5): 529-566, May 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. SW92.Amitabh Srivastava and David Wall. A Practical System for lntermodule Code Optimization at Link- Time. DEC WRL Research Report 92/6, December 1992.Google ScholarGoogle Scholar
  36. US87.David Ungar and Randall B. Smith. SELF: The Power of Simplicity. In OOPSLA '87 Conference Proceedings, p. 227-241, Orlando, FL, October 1987. Published as SIGPLAN Notices 22(12), December 1987. Also published in Lisp and Symbolic Computation 4(3), Kluwer Academic Publishers, June 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Wall91.David Wall. Predicting Program Behavior Using Real or Estimated Profiles. in Proceedings of the SIGPLAN '91 Conference on Programming Language Design and Implementation, p. 59-70, Toronto, Canada, June 1991. Published as SIGPLAN Notices 26(6), June 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Optimizing dynamically-dispatched calls with run-time type feedback

      Reviews

      John Abel Moyne

      Object-oriented programs are more difficult to optimize than programs written in standard languages such as C or FORTRAN, because they normally contain a larger number of smaller procedures, and optimization must be done by calls to these procedures in the course of running the program. In other words, the compiler must continuously interact with the running program to dynamically optimize the execution. The authors have developed a procedure, called type feedback, for this runtime communication with the compiler. The procedure appears to be in the experimental stage, but the authors provide details of the implementation and the resulting speed gains for the SELF system and are optimistic that similar results can be obtained for C++ and other languages. They conclude, We have implemented a compilation system for SELF that dynamically recompiles often-used code and uses type feedback to generate better code. The system uses simple heuristics to decide which methods to recompile, how much to rely on type feedback, and how much to optimize.…We believe that type feedback is an attractive optimization for situations where the exact (implementation-level) type of the arguments to a relatively costly operation is unknown at compile time, and where knowing the type would allow the compiler to generate more efficient code.

      Access critical reviews of Computing literature here

      Become a reviewer for Computing Reviews.

      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!