Static Garbage Collection for L3
William Lovas and Neelakantan Krishnaswami
Overview
We employ a simple type-based analysis for the L3 language to drive an
optimization that automatically converts non-escaping memory allocations to
stack allocations. Our optimization improves performance signifantly on
some programs that allocate lots of non-escaping intermediate data
structures.
Documents
These describe our work in more detail. It's amusing to see how our ideas
about the project changed between the proposal and the writeup. . .
Code
Somewhat messy -- may not compile on other systems. Requires the
Boehm-Demers-Weiser conservative garbage collector for C, as well as O'Caml
version 3.08.1 or later. The key changes are in alloca.ml
,
translate.ml
, and munch.ml
.