Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorDietmar Maurer <dietmar@mono-cvs.ximian.com>2003-05-22 18:22:54 +0400
committerDietmar Maurer <dietmar@mono-cvs.ximian.com>2003-05-22 18:22:54 +0400
commit5964ed275afed6a8ce3c9b8ef03a85bfc606f51a (patch)
tree8b42f9b84cb0c1ca8aadd04f817027458611af28 /docs
parente7bb3eb619bd7fbe878ba1bcae62490403256d42 (diff)
update
svn path=/trunk/mono/; revision=14798
Diffstat (limited to 'docs')
-rw-r--r--docs/exceptions13
1 files changed, 8 insertions, 5 deletions
diff --git a/docs/exceptions b/docs/exceptions
index e98202cf07b..d2d810ba7d0 100644
--- a/docs/exceptions
+++ b/docs/exceptions
@@ -56,11 +56,14 @@ leave: is simply translated into a branch to the target. If the leave
instruction is inside a finally block (but not inside another handler)
we call the finally handler before we branch to the target.
-finally/endfinally: is translated into subroutine ending with a "return"
-statement. The subroutine does not save EBP/ESP, because we need access to the
-local variables of the enclosing method. We have to use a "call"
-instruction to execute such finally handlers. This makes it possible to
-execute them inside the stack unwinding code.
+finally/endfinally, filter/endfilter: is translated into subroutine ending with
+a "return" statement. The subroutine does not save EBP, because we need access
+to the local variables of the enclosing method. Its is possible that
+instructions inside those handlers modify the stack pointer, thus we save the
+stack pointer at the start of the handler, and restore it at the end. We have
+to use a "call" instruction to execute such finally handlers. This makes it
+also possible to execute them inside the stack unwinding code. Filters receives
+the exception object in ECX.
throw: we first save all regs into a sigcontext struct (we pass the
exception object in register ECX), and then call the stack unwinding