[Stackless] can it be done with setjmp/longjmp?
Christian Tismer
tismer at tismer.com
Wed Feb 27 12:44:52 CET 2002
Russ Cox wrote:
>>[proposal about using setjmp/longjmp and alloca as a
>>``portable'' fall back for switching stacks]
>>
>
> This seems like a terrible idea. Using alloca to put an entire
> stack frame back doesn't even seem like it would work, and
> if it did would depend on the underlying compiler and
> machine architecture. At this point you might as well just
> write the ten lines of assembly to do the stack switching.
It does work, but it is in fact a hack.
My problem is that I want to grow and shrink the stack
inplace. Using setjmp/longjmp would force me to use
a second, temporary stack while I'm restoring the real
stack. Alloca can save this second stack.
...
> If you mean how portable is a setjmp/longjmp-based coroutines
> implementation (which seems like a more likely question), the answer
> is fairly portable. I've written and run coroutine packages based
> on setjmp and longjmp on a number of systems. As mentioned
> in the pth paper, sometimes setjmp and longjmp are buggered and
> don't allow use for coroutine-like applications, but writing your
> own isn't hard. It's between five and twenty lines of assembly
> depending on the number of registers that need saving; you
> write it once and don't worry about it after that.
Well, I will stick with the 9 lines of assembly for now :-)
ciao - chris
--
Christian Tismer :^) <mailto:tismer at tismer.com>
Mission Impossible 5oftware : Have a break! Take a ride on Python's
Kaunstr. 26 : *Starship* http://starship.python.net/
14163 Berlin : PGP key -> http://wwwkeys.pgp.net/
PGP Fingerprint E182 71C7 1A9D 66E9 9D15 D3CC D4D7 93E2 1FAE F6DF
where do you want to jump today? http://www.stackless.com/
_______________________________________________
Stackless mailing list
Stackless at www.tismer.com
http://www.tismer.com/mailman/listinfo/stackless
More information about the Stackless
mailing list