Fast and effective procedure inlining

  • Oscar Waddell
  • R. Kent Dybvig
Procedural Programming I
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1302)


The effectiveness of an inlining algorithm is determined not only by its ability to recognize inlining opportunities but also by its discretion in exercising those opportunities. This paper presents a new inlining algorithm for higher-order languages that combines simple analysis techniques with demand-driven online transformation to achieve consistent and often dramatic performance gains in fast linear time. The algorithm is shown to be as effective as and significantly faster than offline, analysis-intensive algorithms recently described in the literature.


Recursive Call Effort Limit Code Size Variable Reference Call Site 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Andrew W. Appel. Compiling with Continuations. Cambridge University Press, 1992.Google Scholar
  2. 2.
    Andrew W. Appel and Trevor Jim. Shrinking lambda expressions in linear time. To appear in Journal of Functional Programming.Google Scholar
  3. 3.
    J. Michael Ashley. A practical and flexible flow analysis for higher-order languages. In Proceedings of the ACM Symposium on Principles of Programming Languages, pages 184–194, 1996.Google Scholar
  4. 4.
    J. Michael Ashley. The effectiveness of flow analysis for inlining. In Proceedings of the 1997 ACM SIGPLAN International Conference on Functional Programming, 1997. To appear.Google Scholar
  5. 5.
    J. Eugene Ball. Predicting the effects of optimization on a procedure body. SIGPLAN Notices, 14(8):214–220, August 1979. Proceedings of the ACM SIGPLAN '79 Symposium on Compiler Construction.Google Scholar
  6. 6.
    R. Cytron, J. Ferrante, B. K. Rosen, M. N. Wegman, and F. K Zadeck. Efficiently computing static single assignment form and the control dependence graph. Technical Report RC 14756, IBM, 1991.Google Scholar
  7. 7.
    Jeffrey Dean and Craig Chambers. Towards better inlining decisions using inlining trials. In Proceedings of the 199/ ACM Conference on LISP and Functional Programming, pages 273–282, 1994.Google Scholar
  8. 8.
    Suresh Jagannathan and Andrew Wright. Flow-directed inlining. In Proceedings of the ACM SIGPLAN '96 Conference on Programming Language Design and Implementation, pages 193–205, 1996.Google Scholar
  9. 9.
    Oscar Waddell and R. Kent Dybvig. Fast and effective procedure inlining. Technical Report 484, Indiana University Computer Science Department, Lindley Hall 101, Bloomington Indiana, 47405, 1997.Google Scholar
  10. 10.
    M. N. Wegman and F. K. Zadeck. Constant propagation with conditional branches. ACM Transactions on Programming Languages and Systems, 3(2):181–210, 1991. *** DIRECT SUPPORT *** A0008C44 00002Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1997

Authors and Affiliations

  • Oscar Waddell
    • 1
  • R. Kent Dybvig
    • 1
  1. 1.Indiana University Computer Science DepartmentBloomingtonUSA

Personalised recommendations