Lambda-Splitting: A Higher-Order Approach to Cross-Module Optimizations

Report ID: TR-537-96
Author: Blume, Matthias / Appel, Andrew W.
Date: 1996-11-00
Pages: 12
Download Formats: |Postscript|
Abstract:

We describe an algorithm for automatic inline expansion across module boundaries that works in the presence of higher-order functions and free variables; it rearranges bindings and scopes as necessary to move nonexpansive code from one module to another. We describe - and implement - the algorithm as transformations on lambda-calculus. Our inliner interacts well with separate compilation and is efficient, robust, and practical enough for everyday use in the SML/NJ compiler. Inlining improves performance by 4--8% on existing code, and makes it possible to use much more data abstraction by consistently eliminating penalties for modularity.

This technical report has been published as
Lambda-Spliting: A Higher-Order Approach to Cross-Module Optimization. Matthias Blume and Andrew W. Appel, Proc. ACM SIGPLAN Int'l Conf. on Functional Programming (ICFP '97), pp. 112-124, June 1997.