From: [EMAIL PROTECTED] Date: Sat, 28 Jul 2007 11:54:40 -0700 (PDT) -If a I<SUB_LABEL> is provided, Parrot automatically performs the equivalent of -a C<newclosure> operation on the given subroutine, and pushes the resulting +If a I<LABEL> is provided, Parrot automatically performs the equivalent of +a C<newclosure> operation on the current subroutine, and pushes the resulting closure.
Hmm, we actually push a continuation in this case -- and will still do so when PDD23 is fully implemented. Is the following clear enough? -- Bob Rogers http://rgrjr.dyndns.org/ ------------------------------------------------------------------------ Index: pdd23_exceptions.pod =================================================================== --- pdd23_exceptions.pod (revision 20307) +++ pdd23_exceptions.pod (working copy) @@ -49,15 +49,15 @@ Push an invocable PMC -- usually a closure or, in rarer cases, a subroutine -- onto the exception handler stack. -If a I<LABEL> is provided, Parrot automatically performs the equivalent of -a C<newclosure> operation on the current subroutine, and pushes the resulting -closure. - When an exception is thrown, Parrot walks up the stack of active exception handlers, invoking each one in turn, but still in the dynamic context of the exception (i.e. the call stack is I<not> unwound first). See below for more detail. +If a I<LABEL> is provided, Parrot creates and pushes a continuation that +resumes execution at I<LABEL>. This has the effect of unconditionally +handling all errors, and unwinding the stack to that label. + =item B<pop_eh> Pop the most recently pushed exception handler off the exception handler stack.