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.