[Python-Dev] Tcl adept wanted for Stackless problem
Christian Tismer
tismer@tismer.com
Wed, 19 Jun 2002 17:28:50 +0200
Guido van Rossum wrote:
>>My big question is:
>>When does Tcl use C stack entries as globals, which
>>are passed as function arguments to interpreter calls?
>
>
> It's a performance hack, just as stackless :-).
Where the effect of my hack is slightly bigger.
We can fight that out in Charleroi. :-)
> Tcl's interpreter data structure has a return value field which can
> receive a string of arbitrary length. In order to make this
> efficient, this is initialized with a pointer to a limited-size array
> on the stack of the caller; when the return value is longer, a
> malloc()'ed buffer is used. There is a little dance you have to do to
> free the malloc()'ed buffer. The big win is that most calls return
> short strings and hence you save a call to malloc() and one to free()
> per invocation. This is used *all over* the Tcl source, so good luck
> getting rid of it.
Thank you! I should better not try this. Instead, I'd like
not to touch it at all.
I have patched tkinter in a way that it does not slice the stack
while some Tcl stuff is running (maybe I didn't catch all).
That should mean that the small stack stings are all alive.
That is, in the context of Tcl, I dispensed with the
"stackless" concept.
The remaining problem is switching of tasklets which contain
Tcl invocations. I thought so far that this is no problem,
since these are disjoint contexts, but Jeff Senn reported
problems as well.
I fear I have the problem that Tcl thinks it is still using
the same interp, or it creates a nested one, while the
tasklets are not nested, but seen as independent. Somehow
I need to create a new Tcl frame chain for every tasklet
that uses Tcl.
Can this be the problem?
Still no clue how to do it but thanks - ciao - chris
--
Christian Tismer :^) <mailto:tismer@tismer.com>
Mission Impossible 5oftware : Have a break! Take a ride on Python's
Johannes-Niemeyer-Weg 9a : *Starship* http://starship.python.net/
14109 Berlin : PGP key -> http://wwwkeys.pgp.net/
work +49 30 89 09 53 34 home +49 30 802 86 56 pager +49 173 24 18 776
PGP 0x57F3BF04 9064 F4E1 D754 C2FF 1619 305B C09C 5A3B 57F3 BF04
whom do you want to sponsor today? http://www.stackless.com/