Treat valuetype arguments precisely during precise stack marking.
authorZoltan Varga <vargaz@gmail.com>
Fri, 7 Dec 2012 15:58:08 +0000 (16:58 +0100)
committerZoltan Varga <vargaz@gmail.com>
Fri, 7 Dec 2012 15:58:20 +0000 (16:58 +0100)
mono/mini/mini-gc.c

index 5bbd3751710e6a6495335902352ad49b09ed8b4f..b3c1519ddc80461929d9cd9f6ea670f3fe0bd2e9 100644 (file)
@@ -1716,11 +1716,13 @@ process_variables (MonoCompile *cfg)
                         * before the liveness pass. We emit OP_GC_LIVENESS_DEF instructions for
                         * them during VZERO decomposition.
                         */
-                       if (!pc_offsets [vmv->vreg])
-                               pin = TRUE;
+                       if (!is_arg) {
+                               if (!pc_offsets [vmv->vreg])
+                                       pin = TRUE;
 
-                       if (ins->backend.is_pinvoke)
-                               pin = TRUE;
+                               if (ins->backend.is_pinvoke)
+                                       pin = TRUE;
+                       }
 
                        if (bitmap) {
                                for (cindex = 0; cindex < gcfg->ncallsites; ++cindex) {