On Wed, Nov 24, 2004 at 09:39:27AM +0100, Leopold Toetsch wrote:
> Bill Coffman wrote:

> >Another interesting thing about this problem is that these new CFG
> >edges are rarely, or at least with low probability, ever travelled. 
> 
> We just don't know it, rare or not doesn't matter.

I'm probably going to get shot for suggesting this, but if each interpreter
has a count of the number of full continuations invoked (ie non-return
continuations), then I think that we can know when we *haven't*. Which (I'm
guessing - need a real finished parrot to know) won't be that often. So I'm
thinking

* counter incremented monotonically for every non-return continuation
  invocation
* Store the value of this counter as part of sub entry
* Check the value against the stored counter on sub return
* If they differ, branch to slow case fixup code. (Well or branch round it
  if they are the same)

Hmmm. But we still have to save all values out from registers before a call.
Pah. May not be a great win.

Nicholas Clark

Reply via email to