[interp] clear locals storage also on pointer type
authorBernhard Urban <bernhard.urban@xamarin.com>
Tue, 7 Mar 2017 09:46:58 +0000 (10:46 +0100)
committerBernhard Urban <bernhard.urban@xamarin.com>
Wed, 8 Mar 2017 22:02:51 +0000 (23:02 +0100)
mono/mini/iltests.il
mono/mini/interp/transform.c

index b7da843208d1ad446b47221d020d47eddae2a80c..ddd09350921a0b1b0f6e093e58c27d16492b3b10 100644 (file)
        // you should not see tons of register spilling.
        //
        .method static public int32 test_0_bytesreg1_free () il managed {
-               .custom instance void [TestDriver]CategoryAttribute::.ctor(string) = ( 01 00 0C 21 49 4E 54 45 52 50 52 45 54 45 52 00 00 )   // ...!INTERPRETER.
                .locals init (
                        unsigned int8      dest,
                        int32              src,
index 17f4f64e2733c49fbbca042c390e07a2e3f1fd48..b20062fa6a46108509833a48c6fcf9cdbbdd2bfd 100644 (file)
@@ -965,7 +965,7 @@ generate (MonoMethod *method, RuntimeMethod *rtm, unsigned char *is_bb_start, Mo
 
        for (i = 0; i < header->num_locals; i++) {
                int mt = mint_type(header->locals [i]);
-               if (mt == MINT_TYPE_VT || mt == MINT_TYPE_O) {
+               if (mt == MINT_TYPE_VT || mt == MINT_TYPE_O || mt == MINT_TYPE_P) {
                        ADD_CODE(&td, MINT_INITLOCALS);
                        break;
                }