Reading List
Pattern-matching compilation
When do Match Compilation Heuristics Matter
Tree Pattern Matching for ML
Classic Papers on Scheme Compilation
Rabbit: A Compiler for Scheme
Lambda: The Ultimate Goto
Lambda: The Ultimate Imperative
Continuation-Passing Style
Chapters 8 and 9, Essentials of Programming Languages
Orbit: An Optimizing Compiler for Scheme
Continuation-Passing, Closure-Passing Style
Realistic Compilation by Program Transformation
Essence of Compiling with Continuations
Contification Using Dominators
Type Checking and Inference
Chapter 16, Modern Compiler Implementation in ML
Basic Polymorphic TypeChecking
Simple Imperative Polymorphism
Closure Conversion and Representation
Definitional Interpreters for Higher-Order Programming Languages
Flow-Directed Closure Conversion
Space-Efficient Closure Representations
Defunctionalization at Work
Static Single Assignment
Chapter 19, Compiler Implementation in ML
Efficiently Computing Static Single Assignment Form and the Control
Dependence Graph
SSA is Functional Programming
A Correspondence between Continuation-Passing Style and Static Single
Assignment Form
Optimizations
Chapter 11,12,13 Advanced Compiler Design and Implementation
Complete Removal of Redundant Expressions
Control- and Data-Flow Analysis
Chapters 10,17, Modern Compiler Implementation in ML
Chapters 7,8, Advanced Compiler Design and Implementation
Control Flow Analysis in Scheme
A Unified Treatment of Flow Analysis in Higher-Order Languages
Points-to Analysis
Analysis of Pointers and Structures
Pointer Analysis: Haven't We Solved the Problem Yet?
Points-to Analysis in Almost Linear Time
Which Pointer Analysis Should I Use?
Register Allocation
Chapter 11, Modern Compiler Implementation in ML
Chapter 16, Advanced Compiler Design and Implementation
Linear Scan Register Allocation
ML Compilers
MLton
TIL: A Type-Directed Optimizing Compiler for ML