From 2ab197204beebb24beaa7624f9f5d6d97b504a71 Mon Sep 17 00:00:00 2001 From: Gonzalo Paniagua Javier Date: Mon, 2 Nov 2009 20:31:02 +0000 Subject: [PATCH] 2009-11-02 Gonzalo Paniagua Javier * exceptions-x86.c: hopefully last change to fix the windows build. This one courtesy of Jonathan Chambers. svn path=/trunk/mono/; revision=145221 --- mono/mini/ChangeLog | 5 +++++ mono/mini/exceptions-x86.c | 17 +++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/mono/mini/ChangeLog b/mono/mini/ChangeLog index 7542e48bdf8..43102e3d7f5 100644 --- a/mono/mini/ChangeLog +++ b/mono/mini/ChangeLog @@ -1,3 +1,8 @@ +2009-11-02 Gonzalo Paniagua Javier + + * exceptions-x86.c: hopefully last change to fix the windows build. + This one courtesy of Jonathan Chambers. + 2009-11-02 Gonzalo Paniagua Javier * debugger-agent.c: remove unused function. diff --git a/mono/mini/exceptions-x86.c b/mono/mini/exceptions-x86.c index b54d3a86f8d..4d733d7778c 100644 --- a/mono/mini/exceptions-x86.c +++ b/mono/mini/exceptions-x86.c @@ -103,21 +103,22 @@ mono_win32_get_handle_stackoverflow (void) static void win32_handle_stack_overflow (EXCEPTION_POINTERS* ep, struct sigcontext *sctx) { - SYSTEM_INFO si; - DWORD page_size; + SYSTEM_INFO si; + DWORD page_size; MonoDomain *domain = mono_domain_get (); - MonoJitInfo *ji, rji; + MonoJitInfo rji; MonoJitTlsData *jit_tls = TlsGetValue (mono_jit_tls_id); MonoLMF *lmf = jit_tls->lmf; MonoContext initial_ctx; MonoContext ctx; guint32 free_stack = 0; + StackFrameInfo frame; /* convert sigcontext to MonoContext (due to reuse of stack walking helpers */ mono_arch_sigctx_to_monoctx (sctx, &ctx); /* get our os page size */ - GetSystemInfo(&si); + GetSystemInfo(&si); page_size = si.dwPageSize; /* Let's walk the stack to recover @@ -132,19 +133,19 @@ win32_handle_stack_overflow (EXCEPTION_POINTERS* ep, struct sigcontext *sctx) do { MonoContext new_ctx; - ji = mono_arch_find_jit_info (domain, jit_tls, &rji, &rji, &ctx, &new_ctx, &lmf, NULL); - if (!ji) { + mono_arch_find_jit_info_ext (domain, jit_tls, &rji, &rji, &ctx, &new_ctx, &lmf, &frame); + if (!frame.ji) { g_warning ("Exception inside function without unwind info"); g_assert_not_reached (); } - if (ji != (gpointer)-1) { + if (frame.ji != (gpointer)-1) { free_stack = (guint8*)(MONO_CONTEXT_GET_BP (&ctx)) - (guint8*)(MONO_CONTEXT_GET_BP (&initial_ctx)); } /* todo: we should call abort if ji is -1 */ ctx = new_ctx; - } while (free_stack < 64 * 1024 && ji != (gpointer) -1); + } while (free_stack < 64 * 1024 && frame.ji != (gpointer) -1); /* convert into sigcontext to be used in mono_arch_handle_exception */ mono_arch_monoctx_to_sigctx (&ctx, sctx); -- 2.25.1