Ok....now I found something very hacky :)<br><br>Reading a Squeak blue book, it says "Squeak simply forces de system to believe that the old/new boundary is at the bottom of the old region. Thus, the entire image is now considered to be new objects, and all objects will be fully traced."<br>
<br>Cheers<br><br>Mariano<br><br><div class="gmail_quote">On Fri, Apr 2, 2010 at 1:22 PM, Mariano Martinez Peck <span dir="ltr"><<a href="mailto:marianopeck@gmail.com">marianopeck@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
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><font color="#888888"><br>Mariano<br>
</font></blockquote></div><br>