From: Stefan Monnier
Subject: Re: Garbage Collection and Aging
Date: 
Message-ID: <5llocxfszy.fsf@daffy.systemsx.cs.yale.edu>
·····@harlqn.co.uk (Mark Tillotson) writes:
> I remember a paper about a system on the T.I. Explorer (I think), in
> which the GC had a training mode, which activated a read barrier.
> This was used to improve the locality of objects which temporally [sic]
> reference each other (in training mode the GC copying everything on
> first mutator read/write, thus clustering related objects into the
> same page(s))

I believe the author was Robert Court or somesuch. This was developped for the
TI Explorer II Lisp machine. The heap was separated into generations and
each generation was split into a "active" and a "sleeping" part. The GC was
a concurrent read-barrier-based copying GC, so objects could be moved from
old-space to new-space either by the backgroup collector or by a read-barrier.
The read-barrier would move the object to the "active" part and the
background-GC would move it to the "sleeping" part (from where a read-barrier
could bring it into "active", of course). After switching spaces, the
background-GC would wait some in order for most of the "active" objects to be
copied through read-barriers. The fact that most objects were moved bt the
mutator was making sure they were layed out in the order in which they were
traversed, which can improve locality tremendously. The GC and the VM were
closely related which allowed the GC to have access to a very fast MMU-based
read-barrier. I don't know exactly how much of the VM was taking advantage of
the "integration" with GC, but this GC system still strikes me as the most
advanced GC in many respects.


        Stefan