2010-03-30 Rodrigo Kumpera <rkumpera@novell.com>
commit1965ecc75ef46a0ed35c1bcf2a5f3e43a6550e64
authorkumpera <kumpera@e3ebcda4-bce8-0310-ba0a-eca2169e7518>
Tue, 30 Mar 2010 21:03:23 +0000 (30 21:03 +0000)
committerkumpera <kumpera@e3ebcda4-bce8-0310-ba0a-eca2169e7518>
Tue, 30 Mar 2010 21:03:23 +0000 (30 21:03 +0000)
treedb6d8fa88a5775403174fdeab20027ac46e1763b
parentca58aef4689a53a519b9695514716e6bdefd23c4
2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>

* mini-exceptions.c: Introduce mono_walk_stack_full, which
allows to select if it's new or old context that is passed to
the callback.

* mini-exceptions.c (mono_handle_exception_internal): Handle the
case when executing a guarded handler from the EH machinery.

* mini-exceptions.c (mono_install_handler_block_guard): New function
responsible for checking for handler blocks, installing the guard and
clearing abort state.

* mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
to check for handler blocks and skip interruption logic if one was found.

* mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
by the handler block guard trampoline. Resumes interruption by raising the
pending ThreadAbortException.

* mini.c (create_jit_info): Calculate the end address of a finally block.

* mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
of a finally block to a specified address and return the old one.

* tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
trampoline patches the original return address and calls the trampoline function.

git-svn-id: svn+ssh://mono-cvs.ximian.com/source/trunk/mono@154495 e3ebcda4-bce8-0310-ba0a-eca2169e7518
mono/mini/ChangeLog
mono/mini/aot-compiler.c
mono/mini/aot-runtime.c
mono/mini/mini-exceptions.c
mono/mini/mini-posix.c
mono/mini/mini-trampolines.c
mono/mini/mini-x86.c
mono/mini/mini-x86.h
mono/mini/mini.c
mono/mini/mini.h
mono/mini/tramp-x86.c