[graf19sll] | Sebastian Graf, Simon Peyton Jones, Selective Lambda Lifting, 1910.11717, arXiv, cs.PL, 2019.
|
Abstract
Lambda lifting is a well-known transformation, traditionally
employed for compiling functional programs to supercombinators. However,
more recent abstract machines for functional languages like OCaml and
Haskell tend to do closure conversion instead for direct access to the
environment, so lambda lifting is no longer necessary to generate machine
code.
We propose to revisit selective lambda lifting in this context as
an optimising code generation strategy and conceive heuristics to
identify beneficial lifting opportunities. We give a static analysis for
estimating impact on heap allocations of a lifting decision. Performance
measurements of our implementation within the Glasgow Haskell Compiler on
a large corpus of Haskell benchmarks suggest modest speedups.
Download
BibTeX
Authors at the institute