Abstract
We describe an algorithm for automatic inline expansion across module boudaries 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 λ-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.
Original language | English (US) |
---|---|
Pages (from-to) | 112-124 |
Number of pages | 13 |
Journal | SIGPLAN Notices (ACM Special Interest Group on Programming Languages) |
Volume | 32 |
Issue number | 8 |
DOIs | |
State | Published - 1997 |
All Science Journal Classification (ASJC) codes
- Software
- Computer Graphics and Computer-Aided Design