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.

Reply via email to