From: Roger Hale <roger.h...
Date: Mon, 11 Apr 2005 09:30:32 -0400
Bob Rogers wrote:
> From: Roger Hale <roger.h...@rcn.com>
> Date: Thu, 07 Apr 2005 04:23:41 -0400
> Leopold Toetsch wrote:
> > Roger Hale <roger.h...@rcn.com> wrote:
> >>Leopold Toetsch wrote:
> >>>As @ARGS (or @IN_ARGS, @OUT_ARGS) is being stored in the context, and
> >>>that context is defacto the continuation, yes - a tail-call would
> >>>inherit this information.
> >>But as each tail-call supplies a new @ARGS, how can this be the case?
> > We would have two parts in the context: @IN_ARGS, @OUT_ARGS. The
> > C<tailcall> opcode can preserve that part with the return context.
> It seems to me that both @IN_ARGS and @OUT_ARGS get used for other
> things (the tail-calls' arguments) in a chain of tail-calls.
> The definition of a tail call is that it returns its callee's results
> back to its caller unmodified.
> So if @OUT_ARGS is used for other
> things, then it's not a tail call.
I don't understand. @OUT_ARGS aren't the arguments returned (to my
understanding), they're the arguments to the next function in sequence.
My mistake; I had thought "@OUT_ARGS" meant "results". I see I didn't
read Leo's original proposal carefully enough, and you were just
following his terminology; my apologies. I agree that information about
return context can't live in @ARGS (in or out) directly.
> . . . but the continuation (I propose) does; and this continues to be
> good for whoever wants to know: the return object holds the return
> I believe so, but I think this is what Leo meant by "... that context is
> defacto the continuation." There doesn't need to be a separate "return
> object" because it would be one-to-one with the continuation.
Sorry, by "return object" I was only meaning the continuation; you are
quite right. Just using a different term for parallelism with "return
context", but I see it only introduced confusion.
So it sounds like we are all saying the same thing now?