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. <br>
<br>The problem is that I don't find where in the code is that. If i look to ObjectMemory >> markAndTrace: oop I see:<br><br>(self oop: oop isGreaterThanOrEqualTo: youngStart)<br> ifTrue: [ header := header bitOr: MarkBit ]. "mark only if young"<br>
<br><br><br>So...it is only marked if young.<br><br>Then, in ObjectMemory >> startObj I see<br><br> (self oop: oop isLessThan: youngStartLocal)<br> ifTrue: ["old object; skip it"<br> field := oop.<br>
^ Upward].<br><br><br>So....where are the old objects being marked ?<br><br>Thanks in advance.<br><br>Mariano<br>