| | |
Summary: LambdaSplitting: A HigherOrder Approach to CrossModule Optimizations
Matthias Blume Andrew W. Appel
Princeton University, April 2, 1997
Abstract
We describe an algorithm for automatic inline expansion across
module boundaries that works in the presence of higherorder
functions and free variables; it rearranges bindings and scopes
as necessary to move nonexpansive code from one module to an
other. We describe---and implement---the algorithm as transfor
mations on #calculus. Our inliner interacts well with separate
compilation and is e#cient, robust, and practical enough for ev
eryday use in the SML/NJ compiler. Inlining improves perfor
mance by 4--8% on existing code, and makes it possible to use
much more data abstraction by consistently eliminating penalties
for modularity.
1 Introduction
Abstraction and modular design of software promote clarity
and provide clear lines along which large projects can be
subdivided. But one often pays a large performance penalty
for using abstraction. Crossmodule inlining can bridge the
|