The SCHEME programming language
The SCHEME programming language
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
The definition of Standard ML
An experiment with inline substitution
Software—Practice & Experience
The semantics of Scheme control-flow analysis
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Object-oriented type inference
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
Control-flow analysis of higher-order languages of taming lambda
Control-flow analysis of higher-order languages of taming lambda
Compiling with continuations
Unexpected side effects of inline substitution: a case study
ACM Letters on Programming Languages and Systems (LOPLAS)
Profile-guided automatic inline expansion for C programs
Software—Practice & Experience
Global tagging optimization by type inference
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
Space-efficient closure representations
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Set-based analysis of ML programs
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Precise concrete type inference for object-oriented languages
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
Selective specialization for object-oriented languages
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Revised report on the algorithmic language scheme
ACM SIGPLAN Lisp Pointers
Flow analysis and optimization of LISP-like structures
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Effective Flow Analysis for Avoiding Run-Time Checks
SAS '95 Proceedings of the Second International Symposium on Static Analysis
Compiling functional languages with flow analysis
ACM Computing Surveys (CSUR)
Strongly typed flow-directed representation transformations (extended abstract)
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
The effectiveness of flow analysis for inlining
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Lambda-splitting: a higher-order approach to cross-module optimizations
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Single and loving it: must-alias analysis for higher-order languages
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Polymorphic splitting: an effective polyvariant flow analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Control-Flow Analysis for a Calculus of Concurrent Objects
IEEE Transactions on Software Engineering
A comparative study of static and profile-based heuristics for inlining
DYNAMO '00 Proceedings of the ACM SIGPLAN workshop on Dynamic and adaptive compilation and optimization
A cost-effective estimation of uncaught exceptions in standard ML programs
Theoretical Computer Science
Should potential loop optimizations influence inlining decisions?
CASCON '03 Proceedings of the 2003 conference of the Centre for Advanced Studies on Collaborative research
From ML to Ada: Strongly-typed language interoperability via source translation
Journal of Functional Programming
Inline Analysis: Beyond Selection Heuristics
Proceedings of the International Symposium on Code Generation and Optimization
The development of Chez Scheme
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Optimizing floating point operations in Scheme
Computer Languages
Hi-index | 0.00 |
A flow-directed inlining strategy uses information derived from control-flow analysis to specialize and inline procedures for functional and object-oriented languages. Since it uses control-flow analysis to identify candidate call sites, flow-directed inlining can inline procedures whose relationships to their call sites are not apparent. For instance, procedures defined in other modules, passed as arguments, returned as values, or extracted from data structures can all be inlined. Flow-directed inlining specializes procedures for particular call sites, and can selectively inline a particular procedure at some call sites but not at others. Finally, flow-directed inlining encourages modular implementations: control-flow analysis, inlining, and post-inlining optimizations are all orthogonal components. Results from a prototype implementation indicate that this strategy effectively reduces procedure call overhead and leads to significant reduction in execution time.