MIPS: Take operand size into account when inverting stack offsets
[mono.git] / mono / mini / dominators.c
index 5024e066f19386af89c0d5fe9faab85412209027..6dbfa3e828c580083ecea0616d409f82ce4cb022 100644 (file)
@@ -384,6 +384,9 @@ mono_compute_natural_loops (MonoCompile *cfg)
                        /* The loop body start is the first bblock in the order they will be emitted */
                        MonoBasicBlock *h = cfg->bblocks [i];
                        MonoBasicBlock *body_start = h;
+#if defined(__native_client_codegen__)
+                       MonoInst *inst;
+#endif
                        GList *l;
 
                        for (l = h->loop_blocks; l; l = l->next) {
@@ -394,6 +397,12 @@ mono_compute_natural_loops (MonoCompile *cfg)
                                }
                        }
 
+#if defined(__native_client_codegen__)
+                       /* Instrument the loop (GC back branch safe point) */
+                       MONO_INST_NEW (cfg, inst, OP_NACL_GC_SAFE_POINT);
+                       inst->dreg = mono_alloc_dreg (cfg, STACK_I4);
+                       mono_bblock_insert_before_ins (body_start, NULL, inst);
+#endif
                        body_start->loop_body_start = 1;
                }
        }