Oscar Waddell and R. Kent Dybvig. Fast and effective procedure inlining. Extended version of a paper that appeared in the Proceedings of the Fourth International Symposium on Static Analysis (SAS '97) Springer-Verlag Lecture Notes in Computer Science 1302, 35-52, September 1997 (bibtex).
Inlining is an important optimization for programs that use procedural abstraction. Because inlining trades code size for execution speed, 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. Benchmark results reported here demonstrate that this inlining algorithm is as effective as and significantly faster than offline, analysis-intensive algorithms recently described in the literature.