by Bratin Saha, Zhong Shao
In Second Workshop on Types in Compilation
http://flint.cs.yale.edu/flint/publications/lift.ps.gz
Add To MetaCart
Abstract:
Abstract. Modern compilers for ML-like polymorphic languages have used explicit run-time type passing to support advanced optimizations such as intensional type analysis, representation analysis and tagless garbage collection. Unfortunately, maintaining type information at run time can incur a large overhead to the time and space usage of a program. In this paper, we present an optimal type-lifting algorithm that lifts all type applications in a program to the top level. Our algorithm eliminates all run-time type constructions within any core-language functions. In fact, it guarantees that the number of types built at run time is strictly a static constant. We present our algorithm as a type-preserving source-to-source transformation and show how to extend it to handle the entire SML'97 with higher-order modules. 1
Citations
|
1463
|
The Definition of Standard ML
– Milner, Tofte, et al.
- 1990
|
|
588
|
Compiling with Continuations
– Appel
- 1992
|
|
318
|
Towards a theory of type structure
– Reynolds
|
|
249
|
Compiling polymorphism using intensional type analysis
– Harper, Morrisett
- 1995
|
|
218
|
TIL: A type-directed optimizing compiler for ML
– Tarditi, Morrisett, et al.
- 1996
|
|
205
|
The essence of compiling with continuations
– Flanagan, Sabry, et al.
- 1993
|
|
198
|
Interprétation fonctionnelle et Élimination des coupures dans l’arithmétique d’ordre supérieur. Thèse de doctorat d’état, Université de Paris VII
– Girard
- 1972
|
|
176
|
Implementing lazy functional languages on stock hardware: the spineless tagless g-machine
– Jones
- 1992
|
|
169
|
Unboxed objects and polymorphic typing
– Leroy
- 1992
|
|
150
|
Lambda lifting: transforming programs to recursive equations
– Johnsson
- 1985
|
|
130
|
A type-based compiler for Standard ML
– Shao, Appel
- 1995
|
|
115
|
Qualified types: Theory and practice
– Jones
- 1992
|
|
105
|
On the type structure of Standard ML
– Harper, Mitchell
- 1992
|
|
94
|
A Survey of the Project AUTOMATH
– Bruijn
- 1980
|
|
83
|
An overview of the FLINT/ML compiler
– Shao
- 1997
|
|
74
|
Coherence for qualified types
– Jones
- 1993
|
|
71
|
et al. Report on the programming language Haskell: a non-strict, purely functional language version 1.2
– Hudak
- 1992
|
|
68
|
Tag-free garbage collection using explicit type parameters
– Tolmach
- 1994
|
|
64
|
Flexible representation analysis
– Shao
- 1997
|
|
62
|
A compilation method for ML-style polymorphic record calculi
– Ohori
- 1992
|
|
58
|
The design and implementation of programming languages
– Hughes
- 1983
|
|
53
|
An ad hoc approach to the implementation of polymorphism
– Morrison, Dearle, et al.
- 1991
|
|
52
|
Compiling Haskell by Program Transformation: a Report from the Trenches
– Jones
- 1996
|
|
49
|
Dynamics in ML
– Leroy, Mauny
- 1993
|
|
47
|
Let-floating: moving bindings to give faster programs
– Jones, Partain, et al.
- 1996
|
|
34
|
Dictionary-Free Overloading by Partial Evaluation
– Jones
- 1994
|
|
34
|
Typed cross-module compilation
– Shao
- 1997
|
|
29
|
Polymorphism for imperative languages without imperative types
– Wright
- 1993
|
|
11
|
A notation for lambda terms II: Refinements and applications
– Nadathur
- 1994
|
|
9
|
Full lifting of type parameters
– Minamide
- 1997
|
|
9
|
A modular fully-lazy lambda lifter in haskell
– Jones
- 1991
|