Piers Cawley <[EMAIL PROTECTED]> wrote: > I argue that we have the problems we do (incorrect behaviour of > continuations, horrible allocation performance) because we chose the > wrong optimization in the first place. The stack optimizations that are > in place make sense when you don't have continuations, but once you do, > the cost of allocating a continuation and maintaining all that COW > complexity becomes prohibitive. I strongly advocate rejigging the > stacks so that one stack frame = 1 stacked thing + 1 link to the next > thing in the chain. No need for COW, no need for memcpy when allocating > continuations, no worrying complexity to deal with while you're trying > to get the behaviour right. Oh, an no need for RetContinuations either.
The current problem of e.g. the oofib benchmark isn't related to that. Actually it doesn't COW copy stacks. A RetContinuation just does a memcpy of the context structure, that's it. Creating RetContinuations is only one factor, the major is the missing method cache. C<callmethodcc> takes almost 3 times the time of creating a RetContinuation. leo