|
ABSTRACT
We describe an efficient technique for incorporating Baker's incremental garbage collection algorithm into the Spineless Tagless G-machine on stock hardware. This algorithm eliminates the stop/go execution associated with bulk copying collection algorithms, allowing the system to place an upper bound on the pauses due to garbage collection. The technique exploits the fact that objects are always accessed by jumping to code rather than being explicitly dereferenced. It works by modifying the entry code-pointer when an object is in the transient state of being evacuated but not scavenged. An attempt to enter it from the mutator causes the object to "self-scavenge" transparently before resetting its entry code pointer. We describe an implementation of the scheme in v4.01 of the Glasgow Haskell Compiler and report performance results obtained by executing a range of applications. These experiments show that the read barrier can be implemented in dynamic dispatching systems such as the STG-machine with very short mutator pause times and with negligible overhead on execution time.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
 |
1
|
A. W. Appel , J. R. Ellis , K. Li, Real-time concurrent collection on stock multiprocessors, Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation, p.11-20, June 20-24, 1988, Atlanta, Georgia, United States
|
| |
2
|
L. Augustsson. Compiling Lazy Functional Languages, Part II. PhD thesis, Chalmers University, Sweden, 1987.
|
 |
3
|
|
 |
4
|
|
 |
5
|
G. L. Burn , S. L. Peyton Jones , J. D. Robson, The spineless G-machine, Proceedings of the 1988 ACM conference on LISP and functional programming, p.244-258, July 25-27, 1988, Snowbird, Utah, United States
[doi> 10.1145/62678.62717]
|
 |
6
|
|
 |
7
|
|
| |
8
|
|
 |
9
|
|
 |
10
|
|
 |
11
|
|
 |
12
|
|
 |
13
|
|
| |
14
|
T. Johnsson. Compiling Lazy Functional Languages. PhD thesis, Chalmers University, Sweden, 1987.
|
| |
15
|
|
| |
16
|
S. P. Jones. The Spineless Tagless g-machine: Second attempt. In Workshop on the Parallel Implementation of Functional Languagesi, volume CSTR 91-07, pages 147-91. University of Southampton, 1991.
|
| |
17
|
S. P. Jones. Implementing lazy functional languages on stock hardware: the Spineless Tagless g-machine. In Journal of Functional Programming, 1992.
|
| |
18
|
S. P. Jones, S. Marlow, and A. Reid. The STG runtime system (revised). draft paper, Microsoft Research Ltd, 1999.
|
 |
19
|
|
| |
20
|
W. Partain. The nob Benchmark Suite of Haskell Programs. Dept. of Computer Science, University of Glasgow, 1993.
|
| |
21
|
|
| |
22
|
|
CITED BY 8
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A. M. Cheadle , A. J. Field , S. Marlow , S. L. Peyton Jones , R. L. While, Exploring the barrier to entry: incremental generational garbage collection for Haskell, Proceedings of the 4th international symposium on Memory management, October 24-25, 2004, Vancouver, BC, Canada
|
|
|
|
|
|
|
|
|
|
|