The design and evaluation of a high performance Smalltalk system
The design and evaluation of a high performance Smalltalk system
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
Continuation-passing, closure-passing style
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The definition of Standard ML
Lisp and Symbolic Computation
Commentary on standard ML
Unboxed values as first class citizens in a non-strict functional language
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
Compiling with continuations
The design and implementation of the self compiler, an optimizing compiler for object-oriented programming languages
Unboxed objects and polymorphic typing
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Principal signatures for higher-order program modules
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Space-efficient closure representations
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Callee-save registers in continuation-passing style
Lisp and Symbolic Computation
Manifest types, modules, and separate compilation
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type-theoretic approach to higher-order modules with sharing
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Compiling polymorphism using intensional type analysis
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Compiling standard ML for efficient execution on modern machines
Compiling standard ML for efficient execution on modern machines
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Semantics for Higher-Order Functors
ESOP '94 Proceedings of the 5th European Symposium on Programming: Programming Languages and Systems
Rabbit: A Compiler for Scheme
Orbit: an optimizing compiler for scheme
Orbit: an optimizing compiler for scheme
Unboxed values and polymorphic typing revisited
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
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
Storage use analysis and its applications
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Vortex: an optimizing compiler for object-oriented languages
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Towards reusable, extensible components
ACM Computing Surveys (CSUR) - Special issue: position statements on strategic directions in computing research
Flick: a flexible, optimizing IDL compiler
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
Lambda-splitting: a higher-order approach to cross-module optimizations
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Bridging the gulf: a common intermediate language for ML and Haskell
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Comparing mostly-copying and mark-sweep conservative collection
Proceedings of the 1st international symposium on Memory management
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
Efficient and safe-for-space closure conversion
ACM Transactions on Programming Languages and Systems (TOPLAS)
Fully reflexive intensional type analysis
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Type-preserving compilation of Featherweight Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Open and closed scopes for constrained genericity
Theoretical Computer Science
Tagless staged interpreters for typed languages
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Inferring annotated types for inter-procedural register allocation with constructor flattening
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
CPS Translations and Applications: The Cube and Beyond
Higher-Order and Symbolic Computation
Intensional analysis of quantified types
ACM Transactions on Programming Languages and Systems (TOPLAS)
Representation Analysis for Coercion Placement
SAS '02 Proceedings of the 9th International Symposium on Static Analysis
Two Ways to Bake Your Pizza - Translating Parameterised Types into Java
Selected Papers from the International Seminar on Generic Programming
Estimating Uncaught Exceptions in Standard ML Programs from Type-Based Equations
COMPSAC '96 Proceedings of the 20th Conference on Computer Software and Applications
TIL: a type-directed, optimizing compiler for ML
ACM SIGPLAN Notices - Best of PLDI 1979-1999
Polymorphic algebraic data type reconstruction
Proceedings of the 8th ACM SIGPLAN international conference on Principles and practice of declarative programming
Static typing for a faulty lambda calculus
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Type-Safe Code Transformations in Haskell
Electronic Notes in Theoretical Computer Science (ENTCS)
Typed common intermediate format
DSL'97 Proceedings of the Conference on Domain-Specific Languages on Conference on Domain-Specific Languages (DSL), 1997
Compiling with continuations, continued
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
A type-preserving closure conversion in haskell
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
A type-preserving compiler in Haskell
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Flattening tuples in an SSA intermediate representation
Higher-Order and Symbolic Computation
Generic Pickling and Minimization
Electronic Notes in Theoretical Computer Science (ENTCS)
Unboxed compilation of floating point arithmetic in a dynamically typed language environment
IFL'02 Proceedings of the 14th international conference on Implementation of functional languages
Bottom-up β-reduction: Uplinks and λ-DAGs
Fundamenta Informaticae - From Mathematical Beauty to the Truth of Nature: to Jerzy Tiuryn on his 60th Birthday
An equivalence-preserving CPS translation via multi-language semantics
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Optimization coaching: optimizers learn to communicate with programmers
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Hi-index | 0.00 |
Compile-time type information should be valuable in efficient compilation of statically typed functional languages such as Standard ML. But how should type-directed compilation work in real compilers, and how much performance gain will type-based optimizations yield? In order to support more efficient data representations and gain more experience about type-directed compilation, we have implemented a new type-based middle end and back end for the Standard ML of New Jersey compiler. We describe the basic design of the new compiler, identify a number of practical issues, and then compare the performance of our new compiler with the old non-type-based compiler. Our measurement shows that a combination of several simple type-based optimizations reduces heap allocation by 36%; and improves the already-efficient code generated by the old non-type-based compiler by about 19% on a DECstation 500.