Author: tewk Date: Wed Oct 24 17:11:20 2007 New Revision: 22465 Modified: trunk/docs/pdds/pdd23_exceptions.pod
Changes in other areas also in this revision: Added: trunk/t/op/exceptions.t Modified: trunk/DEPRECATED.pod trunk/compilers/json/JSON/pge2pir.tg trunk/compilers/json/postalcodes.pir trunk/compilers/past-pm/POST/Grammar.tg trunk/compilers/pct/src/HLLCompiler.pir trunk/compilers/pct/src/POST/Grammar.tg trunk/compilers/pge/PGE/Exp.pir trunk/compilers/pirc/src/pirutil.c trunk/compilers/tge/TGE/Compiler.pir trunk/docs/compiler_faq.pod trunk/editor/pir-mode.el trunk/languages/APL/src/parse2past.tg trunk/languages/PIR/docs/PROPOSALS trunk/languages/PIR/lib/pasm_core.pg trunk/languages/PIR/lib/pasm_instr.pg trunk/languages/WMLScript/src/wmlsstdlibs.pir trunk/languages/cardinal/src/OSTGrammar.tg trunk/languages/dotnet/doc/constructs/exceptions.pod trunk/languages/dotnet/src/translator.pir trunk/languages/forth/forth.pir trunk/languages/forth/test.pir trunk/languages/lisp/internals.pir trunk/languages/lisp/system.pir trunk/languages/lua/lib/lfs.pir trunk/languages/perl6/perl6.pir trunk/languages/pheme/lib/PhemeSymbols.pir trunk/languages/pheme/pheme.pir trunk/languages/tcl/runtime/builtin/append.pir trunk/languages/tcl/runtime/builtin/catch.pir trunk/languages/tcl/runtime/builtin/dict.pir trunk/languages/tcl/runtime/builtin/file.pir trunk/languages/tcl/runtime/builtin/foreach.pir trunk/languages/tcl/runtime/builtin/info.pir trunk/languages/tcl/runtime/builtin/inline.pir trunk/languages/tcl/runtime/builtin/lappend.pir trunk/languages/tcl/runtime/builtin/lindex.pir trunk/languages/tcl/runtime/builtin/namespace.pir trunk/languages/tcl/runtime/builtin/proc.pir trunk/languages/tcl/runtime/builtin/scan.pir trunk/languages/tcl/runtime/builtin/source.pir trunk/languages/tcl/runtime/builtin/string.pir trunk/languages/tcl/runtime/builtin/uplevel.pir trunk/languages/tcl/runtime/builtin/vwait.pir trunk/languages/tcl/runtime/conversions.pir trunk/languages/tcl/runtime/hacks.pir trunk/languages/tcl/runtime/string_to_list.pir trunk/languages/tcl/runtime/tcllib.pir trunk/languages/tcl/runtime/variables.pir trunk/languages/tcl/src/builtin/expr.pir trunk/languages/tcl/src/builtin/for.tmt trunk/languages/tcl/src/builtin/while.tmt trunk/languages/tcl/src/grammar/expr/functions.pir trunk/languages/tcl/src/grammar/expr/operators.pir trunk/languages/tcl/src/grammar/expr/past2pir.tg trunk/languages/tcl/src/macros.pir trunk/languages/tcl/src/tclsh.pir trunk/languages/tcl/t/internals/select_option.t trunk/languages/tcl/t/internals/select_switches.t trunk/lib/Parrot/PIR/Formatter.pm trunk/runtime/parrot/library/Iter.pir trunk/runtime/parrot/library/PGE/P6Grammar.pir trunk/runtime/parrot/library/PGE/Perl6Grammar.pir trunk/runtime/parrot/library/Parrot/HLLCompiler.pir trunk/src/ops/core.ops trunk/src/ops/ops.num trunk/t/compilers/pge/p5regex/p5rx.t trunk/t/compilers/pge/p6regex/01-regex.t trunk/t/compilers/pge/perl6regex/01-regex.t trunk/t/library/coroutine.t trunk/t/library/iter.t trunk/t/library/pg.t trunk/t/library/range.t trunk/t/oo/composition.t trunk/t/oo/ops.t trunk/t/op/cmp-nonbranch.t trunk/t/op/gc.t trunk/t/op/sprintf.t trunk/t/pmc/bigint.t trunk/t/pmc/class.t trunk/t/pmc/complex.t trunk/t/pmc/exception.t trunk/t/pmc/exporter.t trunk/t/pmc/float.t trunk/t/pmc/io_status.t trunk/t/pmc/object.t trunk/t/pmc/parrotio.t trunk/t/pmc/pmcproxy.t trunk/t/pmc/resizablestringarray.t trunk/t/pmc/super.t Log: [exceptions] Adds pop_eh and push_eh_p ** MAKE REALCLEAN REQUIRED DUE TO NEW OPS ** Modified: trunk/docs/pdds/pdd23_exceptions.pod ============================================================================== --- trunk/docs/pdds/pdd23_exceptions.pod (original) +++ trunk/docs/pdds/pdd23_exceptions.pod Wed Oct 24 17:11:20 2007 @@ -54,16 +54,18 @@ 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 +If a I<LABEL> or is provided, Parrot creates and pushes a continuation that resumes execution at I<LABEL> if invoked, which has the effect of unconditionally handling all errors, and unwinding the stack to that label. +If a I<INVOCABLE_PMC> is provided, Parrot pushes the pmc which will execute +if invoked, which has the effect of unconditionally handling all errors, +replacing the stack with that execution context of the invocable pmc. + =item B<pop_eh> Pop the most recently pushed exception handler off the exception handler stack. -{{ TODO: Provide exception handler stack introspection. }} - =item B<throw I<EXCEPTION>> Throw an exception consisting of the given I<EXCEPTION> PMC. Active exception @@ -131,6 +133,28 @@ =back +=head2 Exception Introspection Opcodes +{{ TODO: Provide exception handler stack introspection. }} + +These are the opcodes relevant to introspection of the exception handler stack: + +=over + +=item B<count_eh> + +Return the quantity of currently active exception handlers. + +=item B<get_eh I<index>> + +Return the exception handler at I<index> + +=item B<get_all_eh> + +Return a resizable pmc array of all current exception handlers. + +=back + + =head2 Order of Operations in Exception Handling When B<throw> or B<throwcc> is called, for all active exception