2010-02-18 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Thu, 18 Feb 2010 00:36:34 +0000 (00:36 -0000)
committerZoltan Varga <vargaz@gmail.com>
Thu, 18 Feb 2010 00:36:34 +0000 (00:36 -0000)
* exceptions-amd64.c (get_throw_trampoline): Add xdebug info.

svn path=/trunk/mono/; revision=151950

mono/mini/ChangeLog
mono/mini/exceptions-amd64.c

index 7c50163f5b206440ba2a2e5705af2bd918061c94..c26930e33834a93b44cec03acbb43fd00bfbb5ab 100755 (executable)
@@ -1,5 +1,7 @@
 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
 
+       * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
+
        * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
 
 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
index b0db85e087dd74160f5843c28673c356cd0bbe61..fede465efb2c046cb00cd790f70f469c02e09e8e 100644 (file)
@@ -353,6 +353,7 @@ get_throw_trampoline (gboolean rethrow, guint32 *code_size, MonoJumpInfo **ji, g
 {
        guint8* start;
        guint8 *code;
+       GSList *unwind_ops;
 
        start = code = mono_global_codeman_reserve (64);
 
@@ -360,6 +361,8 @@ get_throw_trampoline (gboolean rethrow, guint32 *code_size, MonoJumpInfo **ji, g
 
        *ji = NULL;
 
+       unwind_ops = mono_arch_get_cie_program ();
+
        amd64_mov_reg_reg (code, AMD64_R11, AMD64_RSP, 8);
 
        /* reverse order */
@@ -386,6 +389,8 @@ get_throw_trampoline (gboolean rethrow, guint32 *code_size, MonoJumpInfo **ji, g
        /* Exception */
        amd64_push_reg (code, AMD64_ARG_REG1);
 
+       mono_add_unwind_op_def_cfa_offset (unwind_ops, code, start, (15 + 1) * sizeof (gpointer));
+
 #ifdef TARGET_WIN32
        /* align stack */
        amd64_push_imm (code, 0);
@@ -411,6 +416,8 @@ get_throw_trampoline (gboolean rethrow, guint32 *code_size, MonoJumpInfo **ji, g
 
        *code_size = code - start;
 
+       mono_save_trampoline_xdebug_info ("throw_exception_trampoline", start, code - start, unwind_ops);
+
        return start;
 }