X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fmini-x86.c;h=f6b61bae8cc000152eec0fdd5c0676933663cdf2;hb=f0f4a22ae1693f1df4aef43d2153b47dabc65df2;hp=ad1637319c864f3875104b3fc4f05c364319f8af;hpb=42874b6479cf103ca2e044b95c27a2edbb21d75c;p=mono.git diff --git a/mono/mini/mini-x86.c b/mono/mini/mini-x86.c index ad1637319c8..f6b61bae8cc 100644 --- a/mono/mini/mini-x86.c +++ b/mono/mini/mini-x86.c @@ -32,6 +32,7 @@ #include #include #include +#include #include "trace.h" #include "mini-x86.h" @@ -4927,6 +4928,13 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) case OP_SET_SP: x86_mov_reg_reg (code, X86_ESP, ins->sreg1, sizeof (mgreg_t)); break; + case OP_FILL_PROF_CALL_CTX: + x86_mov_membase_reg (code, ins->sreg1, MONO_STRUCT_OFFSET (MonoContext, esp), X86_ESP, sizeof (mgreg_t)); + x86_mov_membase_reg (code, ins->sreg1, MONO_STRUCT_OFFSET (MonoContext, ebp), X86_EBP, sizeof (mgreg_t)); + x86_mov_membase_reg (code, ins->sreg1, MONO_STRUCT_OFFSET (MonoContext, ebx), X86_EBX, sizeof (mgreg_t)); + x86_mov_membase_reg (code, ins->sreg1, MONO_STRUCT_OFFSET (MonoContext, esi), X86_ESI, sizeof (mgreg_t)); + x86_mov_membase_reg (code, ins->sreg1, MONO_STRUCT_OFFSET (MonoContext, edi), X86_EDI, sizeof (mgreg_t)); + break; default: g_warning ("unknown opcode %s\n", mono_inst_name (ins->opcode)); g_assert_not_reached (); @@ -5634,7 +5642,7 @@ mono_arch_build_imt_trampoline (MonoVTable *vtable, MonoDomain *domain, MonoIMTC } if (!fail_tramp) - mono_stats.imt_trampolines_size += code - start; + UnlockedAdd (&mono_stats.imt_trampolines_size, code - start); g_assert (code - start <= size); #if DEBUG_IMT @@ -5749,12 +5757,6 @@ mono_arch_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMetho return ins; } -gboolean -mono_arch_print_tree (MonoInst *tree, int arity) -{ - return 0; -} - guint32 mono_arch_get_patch_offset (guint8 *code) { @@ -6294,29 +6296,6 @@ mono_arch_decompose_long_opts (MonoCompile *cfg, MonoInst *long_ins) #endif /* MONO_ARCH_SIMD_INTRINSICS */ } -/*MONO_ARCH_HAVE_HANDLER_BLOCK_GUARD*/ -gpointer -mono_arch_install_handler_block_guard (MonoJitInfo *ji, MonoJitExceptionInfo *clause, MonoContext *ctx, gpointer new_value) -{ - int offset; - gpointer *sp, old_value; - char *bp; - - offset = clause->exvar_offset; - - /*Load the spvar*/ - bp = MONO_CONTEXT_GET_BP (ctx); - sp = *(gpointer*)(bp + offset); - - old_value = *sp; - if (old_value < ji->code_start || (char*)old_value > ((char*)ji->code_start + ji->code_size)) - return old_value; - - *sp = new_value; - - return old_value; -} - /* * mono_aot_emit_load_got_addr: *