From: chromatic <[EMAIL PROTECTED]> Date: Wed, 25 Jun 2008 16:43:14 -0700
On Wednesday 25 June 2008 16:33:31 Bob Rogers wrote: > I believe this is the same issue I brought up Sunday in "[pdd25cx] > Calling a continuation doesn't restore error handlers". If so, the real > issue is that continuations no longer restore handler scopes, and this > is just a band-aid. I agree. I talked to Allison about this, and she said that we need to move dynamic exception handlers into contexts instead of a global variable, which should restore dynamic handler scoping. -- c I'm afraid I don't understand the point of this. In trunk, handlers are kept on interp->dynamic_env, not a global, and dynamic_env is captured by continuations, which is how they are restored. Moving them back into contexts would not eliminate the need for continuations to capture this state, because the sub can push or pop handlers after the continuation is taken; the context state is too coarse-grained. In other words, moving dynamic_env into Parrot_Context seems at best to increase the number of structure members that have to be updated when calling a sub. At worst, it could revert the effect of r14876, reintroducing old bugs with calling continuations. Perhaps Allison would like to clarify? Or maybe I should propose a change? -- Bob