© University of Kent - Contact | Feedback | Legal | FOI | Cookies
Garbage collecting shared environment closure reducers
Stephen Thomas and Richard Jones
Technical Report 31-94, Computing Laboratory, University of Kent at Canterbury, December 1994.Abstract
Shared environment closure reducers such as Fairbairn and Wray's TIM incur a comparatively low cost when creating a suspension, and so provide an elegant method for implementing lazy functional evaluation. However, comparatively little attention has been given to the problems involved in identifying which portions of a shared environment are needed (and ignoring those which are not) during a garbage collection. Proper consideration of this issue has subtle consequences when implementing a storage manager in a TIM-like system. We describe the problem and illustrate the negative consequences of ignoring it.
We go on to describe a solution in which the compiler determines statically which portions of that code's environment are required for each piece of code it generates, and emits information to assist the run-time storage manager to scavenge environments selectively. We also describe a technique for expressing this information directly as executable code, and demonstrate that a garbage collector implemented in this way can perform significantly better than an equivalent, table-driven interpretive collector.
Bibtex Record
@techreport{147,
author = {Stephen Thomas and Richard Jones},
title = {Garbage Collecting Shared Environment Closure Reducers},
month = {December},
year = {1994},
pages = {182-196},
keywords = {determinacy analysis, Craig interpolants},
note = {},
doi = {},
url = {http://www.cs.kent.ac.uk/pubs/1994/147},
institution = {Computing Laboratory, University of Kent at Canterbury},
number = {31-94},
type = {Technical Report},
}