[Stackless] Tasklet Slot Inheritance

Christian Tismer tismer at stackless.com
Sun May 20 20:42:40 CEST 2007

On 20.05.2007, at 19:16, Kristján Valur Jónsson wrote:

>> -----Original Message-----
>> From: stackless-bounces at stackless.com [mailto:stackless-
>> bounces at stackless.com] On Behalf Of Richard Tew
>> When a tasklet is killed, it has its references cleared through the
>> tp_clear method.  This is part of the Python type implementation and
>> clears various references in order to prevent or break reference
>> cycles.  Including, as observed here, the slots.
> tp_clear() is supposed to be called by the garbage collector when  
> it so chooses.  It is not usually something that should be manually  
> invoked.  I am curious as to why this was added.   There must have  
> been a good reason, since this is highly unorthodox.  Maybe  
> Christian can recall?

I wanted to have a way to really break a tasklet. I think the main  
was the existance of those stack slices in hard-switching.
The problem is that these stack slices create references to objects
which cannot be garbage collected. Therefore, I needed to explicitly
peel everything out of the tasklet myself to loose as many as possible
references, ASAP.

IOW., I need to call tp_clear here, because the GC fails to do it,
because references coming from stack slices are not detected and GC
never gets called.

Maybe it is possible to do a less crude cleanup, preserving user  
if you think it is worth the effort.

cheers - chris

Stackless mailing list
Stackless at stackless.com

More information about the Stackless mailing list