From: Vlad Brezae Date: Thu, 7 May 2020 15:22:33 +0000 (+0300) Subject: [interp] Remove unnecessary code (#35952) X-Git-Tag: submit/tizen/20210909.063632~8130 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c8555e04618ed522d860cf419b26983a9445e1a1;p=platform%2Fupstream%2Fdotnet%2Fruntime.git [interp] Remove unnecessary code (#35952) param_count is always 1 and it doesn't need to be computed at runtime. --- diff --git a/src/mono/mono/mini/interp/interp.c b/src/mono/mono/mini/interp/interp.c index 46b1664..d2e388d 100644 --- a/src/mono/mono/mini/interp/interp.c +++ b/src/mono/mono/mini/interp/interp.c @@ -5143,26 +5143,13 @@ call_newobj: MINT_IN_BREAK; } MINT_IN_CASE(MINT_INTRINS_BYREFERENCE_CTOR) { - MonoMethodSignature *csig; - guint32 token; - - frame->ip = ip; - token = ip [1]; - ip += 2; - - InterpMethod *cmethod = (InterpMethod*)frame->imethod->data_items [token]; - csig = mono_method_signature_internal (cmethod->method); - - g_assert (csig->hasthis); - sp -= csig->param_count; - - gpointer arg0 = sp [0].data.p; - + gpointer arg0 = sp [-1].data.p; gpointer *byreference_this = (gpointer*)vt_sp; *byreference_this = arg0; /* Followed by a VTRESULT opcode which will push the result on the stack */ - ++sp; + /* FIXME kill MINT_VTRESULT */ + ip++; MINT_IN_BREAK; } MINT_IN_CASE(MINT_INTRINS_BYREFERENCE_GET_VALUE) { diff --git a/src/mono/mono/mini/interp/mintops.def b/src/mono/mono/mini/interp/mintops.def index 15171dc..d3a7a73 100644 --- a/src/mono/mono/mini/interp/mintops.def +++ b/src/mono/mono/mini/interp/mintops.def @@ -811,7 +811,7 @@ OPDEF(MINT_PROF_COVERAGE_STORE, "prof_coverage_store", 5, Pop0, Push0, MintOpLon OPDEF(MINT_INTRINS_ENUM_HASFLAG, "intrins_enum_hasflag", 2, Pop2, Push1, MintOpClassToken) OPDEF(MINT_INTRINS_GET_HASHCODE, "intrins_get_hashcode", 1, Pop1, Push1, MintOpNoArgs) OPDEF(MINT_INTRINS_GET_TYPE, "intrins_get_type", 1, Pop1, Push1, MintOpNoArgs) -OPDEF(MINT_INTRINS_BYREFERENCE_CTOR, "intrins_byreference_ctor", 2, VarPop, Push1, MintOpClassToken) +OPDEF(MINT_INTRINS_BYREFERENCE_CTOR, "intrins_byreference_ctor", 1, Pop1, Push1, MintOpClassToken) OPDEF(MINT_INTRINS_BYREFERENCE_GET_VALUE, "intrins_byreference_get_value", 1, Pop1, Push1, MintOpNoArgs) OPDEF(MINT_INTRINS_UNSAFE_ADD_BYTE_OFFSET, "intrins_unsafe_add_byte_offset", 1, Pop2, Push1, MintOpNoArgs) OPDEF(MINT_INTRINS_UNSAFE_BYTE_OFFSET, "intrins_unsafe_byte_offset", 1, Pop2, Push1, MintOpNoArgs) diff --git a/src/mono/mono/mini/interp/transform.c b/src/mono/mono/mini/interp/transform.c index 412f0ed..c9bf7a6 100644 --- a/src/mono/mono/mini/interp/transform.c +++ b/src/mono/mono/mini/interp/transform.c @@ -4610,7 +4610,6 @@ generate_code (TransformData *td, MonoMethod *method, MonoMethodHeader *header, /* public ByReference(ref T value) */ g_assert (csignature->hasthis && csignature->param_count == 1); interp_add_ins (td, MINT_INTRINS_BYREFERENCE_CTOR); - td->last_ins->data [0] = get_data_item_index (td, mono_interp_get_imethod (domain, m, error)); } else if (klass != mono_defaults.string_class && !mono_class_is_marshalbyref (klass) && !mono_class_has_finalizer (klass) && @@ -6498,12 +6497,6 @@ get_inst_stack_usage (TransformData *td, InterpInst *ins, int *pop, int *push) *push = 1; break; } - case MINT_INTRINS_BYREFERENCE_CTOR: { - InterpMethod *imethod = (InterpMethod*) td->data_items [ins->data [0]]; - *pop = imethod->param_count; - *push = 1; - break; - } default: g_assert_not_reached (); }