Garbage Collecting Shared Environment Closure Reducers

Thomas, Stephen P. and Jones, Richard E. (1994) Garbage Collecting Shared Environment Closure Reducers. Technical report. Computing Laboratory, University of Kent at Canterbury 10.1016/0020-0190(95)00131-U. (The full text of this publication is not currently available from this repository. You may be able to access a copy if URLs are provided)

The full text of this publication is not available from this repository. (Contact us about this Publication)
Official URL


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.

Item Type: Monograph (Technical report)
Uncontrolled keywords: garbage collection, functional programming, compilers
Subjects: Q Science > QA Mathematics (inc Computing science) > QA 76 Software, computer programming,
Divisions: Faculties > Science Technology and Medical Studies > School of Computing > Theoretical Computing Group
Faculties > Science Technology and Medical Studies > School of Computing > Systems Architecture Group
Depositing User: Richard Jones
Date Deposited: 12 Aug 2009 19:24
Last Modified: 04 Nov 2014 11:51
Resource URI: (The current URI for this page, for reference purposes)
  • Depositors only (login required):