How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Higher-order modules and the phase distinction
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Control-flow analysis of higher-order languages of taming lambda
Control-flow analysis of higher-order languages of taming lambda
Compiling with continuations
Two-level functional languages
Two-level functional languages
Unboxed objects and polymorphic typing
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Polyvariant binding-time analysis for applicative languages
PEPM '93 Proceedings of the 1993 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
The essence of compiling with continuations
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Compiling polymorphism using intensional type analysis
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Binding-time analysis for standard ML
Lisp and Symbolic Computation - Special issue on partial evaluation and semantics-based program manipulation (PEPM '94)
Realistic compilation by partial evaluation
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
ACM Transactions on Programming Languages and Systems (TOPLAS)
A general approach for run-time specialization and its application to C
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type-directed partial evaluation
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A modal analysis of staged computation
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Two for the price of one: composing partial evaluation and compilation
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
Flexible representation analysis
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
Multi-stage programming with explicit annotations
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
On the runtime complexity of type-directed unboxing
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Typed cross-module compilation
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Implementing typed intermediate languages
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Efficient incremental run-time specialization for free
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Transparent modules with fully syntatic signatures
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Macros as multi-stage computations: type-safe, generative, binding macros in MacroML
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
The Definition of Standard ML
Polymorphic Binding-Time Analysis
ESOP '94 Proceedings of the 5th European Symposium on Programming: Programming Languages and Systems
TIC '98 Proceedings of the Second International Workshop on Types in Compilation
Towards a theory of type structure
Programming Symposium, Proceedings Colloque sur la Programmation
A temporal-logic approach to binding-time analysis
LICS '96 Proceedings of the 11th Annual IEEE Symposium on Logic in Computer Science
Multistage programming: its theory and applications
Multistage programming: its theory and applications
Type-specialized staged programming with process separation
Proceedings of the 2009 ACM SIGPLAN workshop on Generic programming
Type-specialized staged programming with process separation
Higher-Order and Symbolic Computation
Hi-index | 0.00 |
Inlining and specialization appear in various forms throughout the implementation of modern programming languages. From mere compiler optimizations to sophisticated techniques in partial evaluation, they are omnipresent, yet each application is treated differently. This paper is an attempt at uncovering the relations between inlining (as done in production compilers) and staged computation (as done in partial evaluators) in the hope of bringing together the research advances in both fields. Using a two-level lambda calculus as the intermediate language, we show how to model inlining as a staged computation while avoiding unnecessary code duplication. The new framework allows us to define inlining annotations formally and to reason about their interactions with module code. In fact, we present a cross-module inlining algorithm that inlines all functions marked inlinable, even in the presence of ML-style parameterized modules.