Region-based memory management systems structure memory by grouping objects
in regions under program control. Memory is reclaimed by deleting regions,
freeing all objects stored therein. Our compiler for C with regions, RC, p
revents unsafe region deletions by keeping a count of references to each re
gion. Using type annotations that make the structure of a program's regions
more explicit, we reduce the overhead of reference counting from a maximum
of 27% to a maximum of 11% on a suite of realistic benchmarks. We generali
se these annotations in a region type system whose main novelty is the use
of existentially quantified abstract regions to represent pointers to objec
ts whose region is partially or totally unknown. A distribution of RC is av
ailable at http://www.cs.berkeley.edu/(similar to)dgay/rc.tar. gz.