Hi, On Tue 01 Nov 2011 01:20, [email protected] (Ludovic Courtès) writes:
> Stefan Israelsson Tampe <[email protected]> skribis: > >> A program is executed and a set of locals is allocated on the stack for the >> duration of the loading, this means that during the >> whole execution of the loaded file the locals variables are below the stack >> pointer and hence always contains a reference from the stack to the last >> used objects in the local variables. > > Normally the GC will only scan the relevant part of the VM stack–see > ‘VM_ENABLE_PRECISE_STACK_GC_SCAN’ in vm.c. I think Stefan's analysis is right. VM marking is working as advertised. The problem is that the slot corresponding to the lexical `f' has not been nulled out. We can probably fix this by doing a local-set of the slot to `undefined' after leaving a `let', `letrec', or `fix' binding in non-tail context. Andy -- http://wingolog.org/
