[Vm-dev] Question about GC

Mariano Martinez Peck marianopeck at gmail.com
Fri Apr 2 11:22:58 UTC 2010


Hi. I have been trying to understand a little how the Squeak GC works, and
there is something very basic I don't understand. GC is supposed to start
from the rootTable and mark all the objects that are reachable. This
objects, includes those which are in the "old space".  I mean, the old
objects too.

The problem is that I don't find where in the code is that. If i look to
ObjectMemory >> markAndTrace: oop    I see:

(self oop: oop isGreaterThanOrEqualTo: youngStart)
        ifTrue: [ header := header bitOr: MarkBit ].  "mark only if young"



So...it is only marked if young.

Then, in ObjectMemory >> startObj   I see

    (self oop: oop isLessThan: youngStartLocal)
        ifTrue: ["old object; skip it"
            field := oop.
            ^ Upward].


So....where are the old objects being marked ?

Thanks in advance.

Mariano
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20100402/d48e405f/attachment.htm


More information about the Vm-dev mailing list