develooper Front page | perl.perl6.internals | Postings from November 2004

Re: Continuations, basic blocks, loops and register allocation

Thread Previous | Thread Next
Dan Sugalski
November 16, 2004 12:25
Re: Continuations, basic blocks, loops and register allocation
Message ID:
At 3:12 PM -0500 11/16/04, Matt Fowles wrote:
>On Tue, 16 Nov 2004 13:41:25 -0500, Dan Sugalski <> wrote:
>>  At 10:32 AM -0800 11/16/04, Jeff Clites wrote:
>>  >The continuation preserves the frame (the mapping from logical
>>  >variables to their values), but not the values of those variables at
>>  >the time the continuation was created.
>>  This is one of the fundamental properties of continuations, but it
>>  does throw people. And it's why register contents have to be thrown
>>  away when a continuation is invoked, since the registers have values,
>>  and continuations don't preserve values.
>I think right here we have the crux of my failure to understand.  I
>was/am under the impression that the continuation will restore the
>register frame to exactly as it was when the continuation was taken.
>Thus those registers which are values (I,N) will continue to have the
>value they had when the continuation was taken, while those registers
>which are pointers/references (S, P) will still point to the same
>place, but that data may have changed.  Is this correct?

No. The registers are just about the only thing that *isn't* restored.

Continuations put the environment back. This includes things like the 
lexical pad stack, the namespace stack, the stack itself, any 
security credentials... basically everything that describes the 
environment. *Data*, on the other hand, is *not* restored. Data stays 
as it is.

Registers are a special case of data, and they're just declared crud 
by fiat, since otherwise things get nasty and unpredictable.

--------------------------------------it's like this-------------------
Dan Sugalski                          even samurai                         have teddy bears and even
                                       teddy bears get drunk

Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About