[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: continuations and threads

This page is part of the web mail archives of SRFI 18 from before July 7th, 2015. The new archives for SRFI 18 contain all messages, not just those from before July 7th, 2015.



>>>>> "Jim" == Jim Blandy <jimb@xxxxxxxxxxxx> writes:

Jim> Actually, this is less powerful than what I described.  In Roland's
Jim> system, you don't need to unwind the C stack when s1 invokes a.  You
Jim> only need to unwind the C stack when s0 returns.  If s0 instead
Jim> invokes some continuation b captured by s1, that's fine.
>> 
>> I'm not sure I'm getting what's going on here:  I *want* the C stack
>> to be unwound (it's a trivial-enough operation), so that the Scheme
>> heap references in the C activation records get freed---you might
>> get a space leak otherwise.

Jim> So, here's my original scenario:

Jim> The C function C1
Jim>   calls the Scheme function S1,
Jim>     which captures some continuation KS1
Jim>     and calls the C function C2,
Jim>       which calls the Scheme function S2,
Jim>       which captures some continuation KS2

Jim> So, in S2, the stack looks like: C1 S1 C2 S2
Jim>                                     ^     ^
Jim>                                     KS1   KS2

Jim> Invoking KS1 will return to somewhere within S1's code.  Invoking KS2
Jim> will return to somewhere within S2's code.  In particular, KS1 is
Jim> *not* S1's continuation --- it does *not* directly return to C1.
Jim> Similarly for KS2.

I understand what you're saying, but you haven't addressed my concern
(re-quoted above) at all.

-- 
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla