[Vm-dev] I don't understand the GC root table

Andreas Raab andreas.raab at gmx.de
Mon Sep 26 11:22:44 UTC 2011


The rootTable is used during incremental GC. Its contents are those 
objects in old space that are roots for objects in new space (see 
ObjectMemory>>beRootIfOld:). It has nothing to do with the (global) 
roots of the interpreter; in fact the root table is cleared right at the 
beginning of fullGC (see senders of #clearRootsTable). The global roots 
are explicitly enumerated in Interpreter>>markAndTraceInterpreterOops.

Cheers,
   - Andreas

On 9/26/2011 11:12, Mariano Martinez Peck wrote:
>   
>
>
> Hi guys. I usually thought that the root table of the GC was the 
> #specialObjectsArray. Now, checking a little bit the VM and image 
> side, it seems I am totally wrong.
>
> "Smalltalk rootTable" answers an array that I cannot understand how 
> such array can be the root. Where are the references to all the system 
> from such an array?  there is no reference to specialObjectsArray for 
> example.
> Even more, the table seems to be full of weird stuff, such as "an 
> OController", a lot of "a Text" instances about my workspaces stuff, 
> Colors, Morhpic, etc....
>
> Smalltalk isRoot:  Smalltalk  specialObjectsArray -> false
> Smalltalk isRoot: true -> false
> Smalltalk isRoot: false -> false
> Smalltalk isRoot: nil -> false
>
> so...I am lost.
>
> Thanks in advance for any help.
>
> -- 
> Mariano
> http://marianopeck.wordpress.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20110926/33e260af/attachment.htm


More information about the Vm-dev mailing list