GC "Heisenberg" problem in latest CVS bootstrap?

Brian Rice water at tunes.org
Sat Dec 4 10:46:56 PST 2004


It could if there excessive slot additions and removals at some point. 
I haven't profiled anything to look for this, but numeric.slate's 
source itself has no abnormal number of such slot manipulations (26). I 
don't think the lexer, parser, or compiler do this kind of thing 
dynamically, either.

On Dec 4, 2004, at 10:23 AM, Todd Fleming wrote:

> Tim Olson wrote:
>
>> I think that is exactly the problem.  I instrumented the GC code 
>> (directly in vm.c) to keep track of the number of bytes allocated 
>> between calls to garbageCollect.  It appears that during the 
>> processing of numeric.slate, the number of bytes allocated between 
>> GCs drops down to less than 1KB, where it stays for some time without 
>> actually growing the heap.  Thus, we are spending > 90% of our time 
>> trying to scavenge a small amount of free memory, rather than just 
>> growing the heap.
>
> Could this be the cause?
>
> x at RootTraits forwardTo: y
> [
>  x = y
>    ifFalse:
>      [CurrentMemory forward: x pointer to: y pointer].
>  interpreter stackPush: y.
>  CurrentMemory garbageCollect
> ] `pidginPrimitive.
>
> Todd

--
Brian T. Rice
LOGOS Research and Development
http://tunes.org/~water/




More information about the Slate mailing list