Inline function expansion replaces a function call with the function
body. With automatic inline function expansion, programs can be
constructed with many small functions to handle complexity and then rely
on the compilation to eliminate most of the function calls. Therefore,
inline expansion serves a tool for satisfying two conflicting goals:
minizing the complexity of the program development and minimizing the
function call overhead of program execution. A simple inline expansion
procedure is presented which uses profile information to address three
critical issues: code expansion, stack expansion, and unavailable
function bodies. Experiments show that a large percentage of function
calls/returns (about 59%) can be eliminated with a modest code expansion
cost (about 17%) for twelve UNIX* programs.