Open Access
18
- https://doi.org/10.1007/978-3-540-78791-4_5
An Adaptive Strategy for Inline Substitution
- Mar 29, 2008
- Keith D Cooper +2 more
Inline substitution is an optimization that replaces a procedure call with the body of the procedure that it calls. Inlining has the immediate benefit of reducing the overhead associated with the call, including register saves and restores, parameter evaluation, and activation record setup and teardown. It has secondary benefits that arise from providing greater context for global optimizations. These benefits can be offset by the effects of increased code size, and by deleterious interactions with other optimizations, such as register allocation.The difficult aspect of inline substitution is choosing which calls to inline. Previous work has focused on static, one-size-fits-all heuristics. This paper presents a feedback-driven adaptive scheme that derives a program-specific inlining heuristic. The key contributions of this work are: (1) a novel parameterization scheme for the inliner that makes it susceptible to fine-grained external control, (2) a scheme for discretizing large integer parameter spaces, and (3) effective search techniques for the resulting search space. This work provides a proof of concept that can provide insight into the design of adaptive controllers for other optimizations with complex decision heuristics. Our goal in this work is not to exhibit the world’s best inliner. Instead, we present evidence to suggest that a program-specific, adaptive scheme is needed to achieve the best results.KeywordsSearch SpaceParameter SchemeCondition StringAdaptive ControllerSearch PointThese keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
- # Deleterious Interactions
- # Secondary Benefits
- # Inline Substitution
- # Proof Of Concept
- # Adaptive Scheme
- # Large Parameter Spaces
- # Previous Work
- # Fine-grained Control
- # Design Of Controllers
- # Large Parameter