[interp] respect reference type in stobj insn
authorBernhard Urban <bernhard.urban@xamarin.com>
Fri, 24 Mar 2017 23:32:20 +0000 (00:32 +0100)
committerBernhard Urban <bernhard.urban@xamarin.com>
Sat, 25 Mar 2017 10:04:26 +0000 (11:04 +0100)
stackval_from_data does everything for us.

mono/mini/interp/interp.c

index c3103d96f4c7dbab7c1f5b401decaee16701b8a4..7197a5e3b933b14ac63d4e8542feb53b7c8174ab 100644 (file)
@@ -3169,11 +3169,9 @@ array_constructed:
                        MINT_IN_BREAK;
                }
                MINT_IN_CASE(MINT_STOBJ) {
-                       int size;
                        c = rtm->data_items[* (guint16 *)(ip + 1)];
                        ip += 2;
-                       size = mono_class_value_size (c, NULL);
-                       memcpy(sp [-2].data.p, &sp [-1].data, size);
+                       stackval_from_data (&c->byval_arg, sp [-2].data.p, &sp [-1].data, FALSE);
                        sp -= 2;
                        MINT_IN_BREAK;
                }