Lambda lifting: transforming programs to recursive equations
Proc. of a conference on Functional programming languages and computer architecture
ORBIT: an optimizing compiler for scheme
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
Realistic compilation by program transformation (detailed summary)
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Notions of computation and monads
Information and Computation
Control-flow analysis of higher-order languages of taming lambda
Control-flow analysis of higher-order languages of taming lambda
Compiling with continuations
CPS-transformation after strictness analysis
ACM Letters on Programming Languages and Systems (LOPLAS)
The essence of compiling with continuations
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Space-efficient closure representations
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Is continuation-passing useful for data flow analysis?
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
A correspondence between continuation passing style and static single assignment form
IR '95 Papers from the 1995 ACM SIGPLAN workshop on Intermediate representations
ACM Transactions on Programming Languages and Systems (TOPLAS)
TIL: a type-directed optimizing compiler for ML
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Lightweight closure conversion
ACM Transactions on Programming Languages and Systems (TOPLAS)
Compiling standard ML to Java bytecodes
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
The design of a class mechanism for Moby
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Syntactic accidents in program analysis: on the impact of the CPS transformation
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Contification using dominators
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Principles of Program Analysis
Principles of Program Analysis
A Portable and Optimizing Back End for the SML/NJ Compiler
CC '94 Proceedings of the 5th International Conference on Compiler Construction
LAMBDA: The Ultimate Declarative
LAMBDA: The Ultimate Declarative
Rabbit: A Compiler for Scheme
From ML to Ada: Strongly-typed language interoperability via source translation
Journal of Functional Programming
Shrinking lambda expressions in linear time
Journal of Functional Programming
Status report: the manticore project
ML '07 Proceedings of the 2007 workshop on Workshop on ML
A scheduling framework for general-purpose parallel languages
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
A new one-pass transformation into monadic normal form
CC'03 Proceedings of the 12th international conference on Compiler construction
Hi-index | 0.01 |
Local CPS conversion is a compiler transformation for improving the code generated for nested loops by a direct-style compiler that uses recursive functions to represent loops. The transformation selectively applies CPS conversion at non-tail call sites, which allows the compiler to use a single machine procedure and stack frame for both the caller and callee. In this paper, we describe LCPS conversion, as well as a supporting analysis. We have implemented Local CPS conversion in the MOBY compiler and describe our implementation. In addition to improving the performance of loops, Local CPS conversion is also used to aid the optimization of non-local control flow by the MOBY compiler. We present results from preliminary experiments with our compiler that show significant reductions in loop overhead as a result of Local CPS conversion.