From 1575348f10b4d0908f4b3dd594f3202b32f82584 Mon Sep 17 00:00:00 2001 From: Rodrigo Kumpera Date: Mon, 25 Sep 2017 16:32:51 -0700 Subject: [PATCH] [interp] Don't inline empty calls that take vt arguments. --- mono/mini/interp/transform.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mono/mini/interp/transform.c b/mono/mini/interp/transform.c index 4273f74553b..1868eb62c10 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++) { -- 2.25.1