The recently introduced _Perceus_ algorithm can automatically insert
reference count instructions such that the resulting (cycle-free) program is
_garbage free_: objects are freed at the very moment they can no longer be
referenced. An important extension is reuse analysis. This optimization pairs
objects of known size with fresh allocations of the same size and tries to
reuse the object in-place at runtime if it happens to be unique. Unfortunately,
current implementations of reuse analysis are fragile with respect to small
program transformations, or can cause an arbitrary increase in the peak heap
usage. We present a novel _drop-guided_ reuse algorithm that is simpler and
more robust than previous approaches. Moreover, we generalize the linear
resource calculus to precisely characterize garbage-free and frame-limited
evaluations. On each function call, a frame-limited evaluation may hold on to
memory longer if the size is bounded by a constant factor. Using this framework
we show that our drop-guided reuse _is_ frame-limited and find that an
implementation of our new reuse approach in Koka can provide significant
speedups.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.