X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fexceptions-x86.c;h=aa10aaad593921b4ef331e96cd14143bbde88914;hb=bc1d754ec15285422b73d40d86cc85ddbd37ce16;hp=531b556e8c0442a9a7ac261fdafd9c5f2d5879e1;hpb=6cce4a3937d2b007d2d2edfb245cc1f5c66a3d95;p=mono.git diff --git a/mono/mini/exceptions-x86.c b/mono/mini/exceptions-x86.c index 531b556e8c0..aa10aaad593 100644 --- a/mono/mini/exceptions-x86.c +++ b/mono/mini/exceptions-x86.c @@ -801,10 +801,7 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, frame->type = FRAME_TYPE_MANAGED; - if (ji->from_aot) - unwind_info = mono_aot_get_unwind_info (ji, &unwind_info_len); - else - unwind_info = mono_get_cached_unwind_info (ji->used_regs, &unwind_info_len); + unwind_info = mono_jinfo_get_unwind_info (ji, &unwind_info_len); regs [X86_EAX] = new_ctx->eax; regs [X86_EBX] = new_ctx->ebx; @@ -853,14 +850,24 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, } /* Pop arguments off the stack */ - /* - * FIXME: LLVM doesn't push these, we can't use ji->from_llvm as it describes - * the callee. - */ -#ifndef ENABLE_LLVM - if (ji->has_arch_eh_info) - new_ctx->esp += mono_jit_info_get_arch_eh_info (ji)->stack_size; + if (ji->has_arch_eh_info) { + int stack_size; + + stack_size = mono_jit_info_get_arch_eh_info (ji)->stack_size; + + if (stack_size) { +#ifdef ENABLE_LLVM + MonoJitInfo *caller_ji; + + caller_ji = mini_jit_info_table_find (domain, (char*)new_ctx->eip, NULL); + /* LLVM doesn't push the arguments */ + if (caller_ji && !caller_ji->from_llvm) + new_ctx->esp += stack_size; +#else + new_ctx->esp += stack_size; #endif + } + } return TRUE; } else if (*lmf) {