From: Vincent Povirk Date: Mon, 11 Apr 2016 19:15:20 +0000 (-0500) Subject: [x86] Store CallInfo in MonoCompileArch structure. X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=bc4a2b0ee06a3570c8165e13aa29f3877a268fee;p=mono.git [x86] Store CallInfo in MonoCompileArch structure. --- diff --git a/mono/mini/mini-x86.c b/mono/mini/mini-x86.c index 5e9204611d7..3257cf8b6f1 100644 --- a/mono/mini/mini-x86.c +++ b/mono/mini/mini-x86.c @@ -1010,7 +1010,9 @@ mono_arch_allocate_vars (MonoCompile *cfg) header = cfg->header; sig = mono_method_signature (cfg->method); - cinfo = get_call_info (cfg->mempool, sig); + if (!cfg->arch.cinfo) + cfg->arch.cinfo = get_call_info (cfg->mempool, sig); + cinfo = (CallInfo *)cfg->arch.cinfo; cfg->frame_reg = X86_EBP; offset = 0; @@ -1156,7 +1158,10 @@ mono_arch_create_vars (MonoCompile *cfg) sig = mono_method_signature (cfg->method); - cinfo = get_call_info (cfg->mempool, sig); + if (!cfg->arch.cinfo) + cfg->arch.cinfo = get_call_info (cfg->mempool, sig); + cinfo = (CallInfo *)cfg->arch.cinfo; + sig_ret = mini_get_underlying_type (sig->ret); if (cinfo->ret.storage == ArgValuetypeInReg) @@ -5513,7 +5518,7 @@ mono_arch_emit_epilog (MonoCompile *cfg) } /* Load returned vtypes into registers if needed */ - cinfo = get_call_info (cfg->mempool, sig); + cinfo = (CallInfo *)cfg->arch.cinfo; if (cinfo->ret.storage == ArgValuetypeInReg) { for (quad = 0; quad < 2; quad ++) { switch (cinfo->ret.pair_storage [quad]) { diff --git a/mono/mini/mini-x86.h b/mono/mini/mini-x86.h index 969b679f29b..0ca2bdcec44 100644 --- a/mono/mini/mini-x86.h +++ b/mono/mini/mini-x86.h @@ -165,6 +165,7 @@ typedef struct { gboolean need_stack_frame_inited; gboolean need_stack_frame; int sp_fp_offset, param_area_size; + gpointer cinfo; gpointer ss_tramp_var; gpointer bp_tramp_var; } MonoCompileArch;