X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Finterp%2Ftransform.c;h=0bdb158053412048eeb49db2387fdf86f22fbfb1;hb=3d47b20c62870f60d6944078b2a9cff7565c3205;hp=4273f74553bb31935c3e5dcb319b17e99906eecb;hpb=04cbe795fa9ff9e3ce50402857053a0a599e9457;p=mono.git diff --git a/mono/mini/interp/transform.c b/mono/mini/interp/transform.c index 4273f74553b..0bdb1580534 100644 --- a/mono/mini/interp/transform.c +++ b/mono/mini/interp/transform.c @@ -1155,7 +1155,11 @@ no_intrinsic: return; } else { /* mheader might not exist if this is a delegate invoc, etc */ - if (mheader && *mheader->code == CEE_RET && called_inited) { + gboolean has_vt_arg = FALSE; + for (i = 0; i < csignature->param_count; i++) + has_vt_arg |= !mini_type_is_reference (csignature->params [i]); + + if (mheader && *mheader->code == CEE_RET && called_inited && !has_vt_arg) { if (td->verbose_level) g_print ("Inline (empty) call of %s.%s\n", target_method->klass->name, target_method->name); for (i = 0; i < csignature->param_count; i++) { @@ -2499,6 +2503,7 @@ generate (MonoMethod *method, InterpMethod *rtm, unsigned char *is_bb_start, Mon #endif break; case STACK_TYPE_MP: + case STACK_TYPE_O: break; default: g_assert_not_reached ();