Unboxed objects and polymorphic typing

This paper presents a program transformation that allows languages with polymorphic typing (e.g. ML) to be implemented with unboxed, multi-word data representations. The transformation introduces coercions between various representations, based on a typing derivation. A prototype ML compiler utilizing this transformation demonstrates important speedups.

[1]  Luca Cardelli The Functional Abstract Machine , 1983 .

[2]  Mads Tofte,et al.  Type Inference for Polymorphic References , 1990, Inf. Comput..

[3]  Andrew W. Appel,et al.  A Standard ML compiler , 1987, FPCA.

[4]  Pierre-Louis Curien,et al.  The Categorical Abstract Machine , 1987, Sci. Comput. Program..

[5]  Richard C. H. Connor,et al.  An ad hoc approach to the implementation of polymorphism , 1991, TOPL.

[6]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[7]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

[8]  John Launchbury,et al.  Unboxed values as first class citizens , 1991 .

[9]  Robin Milner,et al.  Principal type-schemes for functional programs , 1982, POPL '82.

[10]  John L. Hennessy,et al.  Register allocation by priority-based coloring , 1984, SIGPLAN '84.

[11]  Andrew W. Appel,et al.  Compiling with Continuations , 1991 .

[12]  Robin Milner,et al.  Definition of standard ML , 1990 .

[13]  Niklaus Wirth,et al.  Programming in Modula-2 , 1985, Texts and Monographs in Computer Science.

[14]  Satish R. Thatte Coercive Type Isomorphism , 1991, FPCA.

[15]  Gerry Kane,et al.  MIPS RISC Architecture , 1987 .

[16]  Andrew W. Appel,et al.  Runtime tags aren't necessary , 1989, LISP Symb. Comput..