Author: Maciej Fijalkowski <[email protected]>
Branch: optresult
Changeset: r74938:3cb5d15021b4
Date: 2014-12-15 14:08 +0200
http://bitbucket.org/pypy/pypy/changeset/3cb5d15021b4/

Log:    Some progress on unrolling

diff too long, truncating to 2000 out of 2397 lines

diff --git a/rpython/jit/metainterp/optimizeopt/heap.py 
b/rpython/jit/metainterp/optimizeopt/heap.py
--- a/rpython/jit/metainterp/optimizeopt/heap.py
+++ b/rpython/jit/metainterp/optimizeopt/heap.py
@@ -148,22 +148,21 @@
                     opnum = OpHelpers.getfield_for_descr(op.getdescr())
                     getop = ResOperation(opnum, [op.getarg(0)],
                                          op.getdescr())
-                    getop.is_source_op = True
+                    getop.source_op = result
                     if isinstance(result, Const):
                         optimizer.make_constant(getop, result)
-                    shortboxes.add_potential(getop, synthetic=True)
+                    shortboxes.add_potential(result, getop, synthetic=True)
                 if op.getopnum() == rop.SETARRAYITEM_GC:
                     result = op.getarg(2)
+                    opnum = OpHelpers.getarrayitem_for_descr(op.getdescr())
+                    getop = ResOperation(opnum, [op.getarg(0), op.getarg(1)],
+                                         op.getdescr())
+                    getop.source_op = result
                     if isinstance(result, Const):
-                        newresult = result.clonebox()
-                        optimizer.make_constant(newresult, result)
-                        result = newresult
-                    getop = ResOperation(rop.GETARRAYITEM_GC, [op.getarg(0), 
op.getarg(1)],
-                                         result, op.getdescr())
-                    shortboxes.add_potential(getop, synthetic=True)
+                        optimizer.make_constant(getop, result)
+                    shortboxes.add_potential(result, getop, synthetic=True)
                 elif op.type != 'v':
-                    xxxx
-                    shortboxes.add_potential(op)
+                    shortboxes.add_potential(op, op)
 
 class BogusPureField(JitException):
     pass
diff --git a/rpython/jit/metainterp/optimizeopt/pure.py 
b/rpython/jit/metainterp/optimizeopt/pure.py
--- a/rpython/jit/metainterp/optimizeopt/pure.py
+++ b/rpython/jit/metainterp/optimizeopt/pure.py
@@ -124,7 +124,7 @@
 
     def produce_potential_short_preamble_ops(self, sb):
         for op in self.emitted_pure_operations:
-            sb.add_potential(op)
+            sb.add_potential(op, op)
 
 dispatch_opt = make_dispatcher_method(OptPure, 'optimize_',
                                       default=OptPure.optimize_default)
diff --git a/rpython/jit/metainterp/optimizeopt/rewrite.py 
b/rpython/jit/metainterp/optimizeopt/rewrite.py
--- a/rpython/jit/metainterp/optimizeopt/rewrite.py
+++ b/rpython/jit/metainterp/optimizeopt/rewrite.py
@@ -23,7 +23,7 @@
 
     def produce_potential_short_preamble_ops(self, sb):
         for op in self.loop_invariant_producer.values():
-            sb.add_potential(op)
+            sb.add_potential(op, op)
 
     def propagate_forward(self, op):
         if op.boolinverse != -1 or op.boolreflex != -1:
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py 
b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
@@ -897,7 +897,7 @@
     def test_dont_delay_setfields(self):
         ops = """
         [p1, p2]
-        i1 = getfield_gc(p1, descr=nextdescr)
+        i1 = getfield_gc_i(p1, descr=nextdescr)
         i2 = int_sub(i1, 1)
         i2b = int_is_true(i2)
         guard_true(i2b) []
@@ -907,7 +907,7 @@
         """
         preamble = """
         [p1, p2]
-        i1 = getfield_gc(p1, descr=nextdescr)
+        i1 = getfield_gc_i(p1, descr=nextdescr)
         i2 = int_sub(i1, 1)
         i2b = int_is_true(i2)
         guard_true(i2b) []
@@ -932,27 +932,27 @@
         [i]
         guard_no_exception() []
         i1 = int_add(i, 3)
-        i2 = call(i1, descr=nonwritedescr)
+        i2 = call_i(i1, descr=nonwritedescr)
         guard_no_exception() [i1, i2]
-        i3 = call(i2, descr=nonwritedescr)
+        i3 = call_i(i2, descr=nonwritedescr)
         jump(i1)       # the exception is considered lost when we loop back
         """
         preamble = """
         [i]
         guard_no_exception() []    # occurs at the start of bridges, so keep it
         i1 = int_add(i, 3)
-        i2 = call(i1, descr=nonwritedescr)
+        i2 = call_i(i1, descr=nonwritedescr)
         guard_no_exception() [i1, i2]
-        i3 = call(i2, descr=nonwritedescr)
+        i3 = call_i(i2, descr=nonwritedescr)
         jump(i1)
         """
         expected = """
         [i]
         guard_no_exception() []    # occurs at the start of bridges, so keep it
         i1 = int_add(i, 3)
-        i2 = call(i1, descr=nonwritedescr)
+        i2 = call_i(i1, descr=nonwritedescr)
         guard_no_exception() [i1, i2]
-        i3 = call(i2, descr=nonwritedescr)
+        i3 = call_i(i2, descr=nonwritedescr)
         jump(i1)
         """
         self.optimize_loop(ops, expected, preamble)
@@ -960,16 +960,16 @@
     def test_bug_guard_no_exception(self):
         ops = """
         []
-        i0 = call(123, descr=nonwritedescr)
-        p0 = call(0, "xy", descr=s2u_descr)      # string -> unicode
+        i0 = call_i(123, descr=nonwritedescr)
+        p0 = call_r(0, "xy", descr=s2u_descr)      # string -> unicode
         guard_no_exception() []
-        escape(p0)
+        escape_n(p0)
         jump()
         """
         expected = """
         []
-        i0 = call(123, descr=nonwritedescr)
-        escape(u"xy")
+        i0 = call_i(123, descr=nonwritedescr)
+        escape_n(u"xy")
         jump()
         """
         self.optimize_loop(ops, expected)
@@ -979,20 +979,20 @@
     def test_call_loopinvariant(self):
         ops = """
         [i1]
-        i2 = call_loopinvariant(1, i1, descr=nonwritedescr)
+        i2 = call_loopinvariant_i(1, i1, descr=nonwritedescr)
         guard_no_exception() []
         guard_value(i2, 1) []
-        i3 = call_loopinvariant(1, i1, descr=nonwritedescr)
+        i3 = call_loopinvariant_i(1, i1, descr=nonwritedescr)
         guard_no_exception() []
         guard_value(i3, 1) []
-        i4 = call_loopinvariant(1, i1, descr=nonwritedescr)
+        i4 = call_loopinvariant_i(1, i1, descr=nonwritedescr)
         guard_no_exception() []
         guard_value(i4, 1) []
         jump(i1)
         """
         preamble = """
         [i1]
-        i2 = call(1, i1, descr=nonwritedescr)
+        i2 = call_i(1, i1, descr=nonwritedescr)
         guard_no_exception() []
         guard_value(i2, 1) []
         jump(i1)
@@ -1008,7 +1008,7 @@
     def test_virtual_1(self):
         ops = """
         [i, p0]
-        i0 = getfield_gc(p0, descr=valuedescr)
+        i0 = getfield_gc_i(p0, descr=valuedescr)
         i1 = int_add(i0, i)
         p1 = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p1, i1, descr=valuedescr)
@@ -1016,7 +1016,7 @@
         """
         preamble = """
         [i, p0]
-        i0 = getfield_gc(p0, descr=valuedescr)
+        i0 = getfield_gc_i(p0, descr=valuedescr)
         i1 = int_add(i0, i)
         jump(i, i1)
         """
@@ -1030,7 +1030,7 @@
     def test_virtual_float(self):
         ops = """
         [f, p0]
-        f0 = getfield_gc(p0, descr=floatdescr)
+        f0 = getfield_gc_f(p0, descr=floatdescr)
         f1 = float_add(f0, f)
         p1 = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p1, f1, descr=floatdescr)
@@ -1038,7 +1038,7 @@
         """
         preamble = """
         [f, p0]
-        f2 = getfield_gc(p0, descr=floatdescr)
+        f2 = getfield_gc_f(p0, descr=floatdescr)
         f1 = float_add(f2, f)
         jump(f, f1)
         """
@@ -1100,7 +1100,7 @@
     def test_virtual_default_field(self):
         ops = """
         [p0]
-        i0 = getfield_gc(p0, descr=valuedescr)
+        i0 = getfield_gc_i(p0, descr=valuedescr)
         guard_value(i0, 0) []
         p1 = new_with_vtable(ConstClass(node_vtable))
         # the field 'value' has its default value of 0
@@ -1108,7 +1108,7 @@
         """
         preamble = """
         [p0]
-        i0 = getfield_gc(p0, descr=valuedescr)
+        i0 = getfield_gc_i(p0, descr=valuedescr)
         guard_value(i0, 0) []
         jump()
         """
@@ -1123,7 +1123,7 @@
         [i]
         p1 = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p1, i, descr=valuedescr)
-        i0 = getfield_gc(p1, descr=valuedescr)
+        i0 = getfield_gc_i(p1, descr=valuedescr)
         i1 = int_add(i0, 1)
         jump(i1)
         """
@@ -1138,7 +1138,7 @@
         ops = """
         [i0, p0]
         guard_class(p0, ConstClass(node_vtable)) []
-        i1 = getfield_gc(p0, descr=valuedescr)
+        i1 = getfield_gc_i(p0, descr=valuedescr)
         i2 = int_sub(i1, 1)
         i3 = int_add(i0, i1)
         p1 = new_with_vtable(ConstClass(node_vtable))
@@ -1148,7 +1148,7 @@
         preamble = """
         [i0, p0]
         guard_class(p0, ConstClass(node_vtable)) []
-        i1 = getfield_gc(p0, descr=valuedescr)
+        i1 = getfield_gc_i(p0, descr=valuedescr)
         i2 = int_sub(i1, 1)
         i3 = int_add(i0, i1)
         jump(i3, i2)
@@ -1165,7 +1165,7 @@
         ops = """
         [i0, p0]
         guard_class(p0, ConstClass(node_vtable)) []
-        i1 = getfield_gc(p0, descr=valuedescr)
+        i1 = getfield_gc_i(p0, descr=valuedescr)
         i2 = int_sub(i1, 1)
         i3 = int_add(i0, i1)
         p2 = new_with_vtable(ConstClass(node_vtable2))
@@ -1178,10 +1178,10 @@
         preamble = """
         [i0, p0]
         guard_class(p0, ConstClass(node_vtable)) []
-        i1 = getfield_gc(p0, descr=valuedescr)
+        i1 = getfield_gc_i(p0, descr=valuedescr)
         i2 = int_sub(i1, 1)
         i3 = int_add(i0, i1)
-        i4 = same_as(i2) # This same_as should be killed by backend
+        #i4 = same_as_i(i2) # This same_as should be killed by backend
         jump(i3, i1, i2)
         """
         expected = """
@@ -1195,8 +1195,8 @@
     def test_virtual_recursive(self):
         ops = """
         [p0]
-        p41 = getfield_gc(p0, descr=nextdescr)
-        i0 = getfield_gc(p41, descr=valuedescr)
+        p41 = getfield_gc_r(p0, descr=nextdescr)
+        i0 = getfield_gc_i(p41, descr=valuedescr)
         p1 = new_with_vtable(ConstClass(node_vtable2))
         p2 = new_with_vtable(ConstClass(node_vtable2))
         setfield_gc(p2, p1, descr=nextdescr)
@@ -1207,8 +1207,8 @@
         """
         preamble = """
         [p0]
-        p41 = getfield_gc(p0, descr=nextdescr)
-        i0 = getfield_gc(p41, descr=valuedescr)
+        p41 = getfield_gc_r(p0, descr=nextdescr)
+        i0 = getfield_gc_i(p41, descr=valuedescr)
         i3 = int_add(i0, 1)
         jump(i3)
         """
@@ -1222,8 +1222,8 @@
     def test_virtual_recursive_forced(self):
         ops = """
         [p0]
-        p41 = getfield_gc(p0, descr=nextdescr)
-        i0 = getfield_gc(p41, descr=valuedescr)
+        p41 = getfield_gc_r(p0, descr=nextdescr)
+        i0 = getfield_gc_i(p41, descr=valuedescr)
         p1 = new_with_vtable(ConstClass(node_vtable2))
         p2 = new_with_vtable(ConstClass(node_vtable2))
         setfield_gc(p2, p1, descr=nextdescr)
@@ -1235,8 +1235,8 @@
         """
         preamble = """
         [p0]
-        p41 = getfield_gc(p0, descr=nextdescr)
-        i0 = getfield_gc(p41, descr=valuedescr)
+        p41 = getfield_gc_r(p0, descr=nextdescr)
+        i0 = getfield_gc_i(p41, descr=valuedescr)
         i1 = int_add(i0, 1)
         p1 = new_with_vtable(ConstClass(node_vtable2))
         p2 = new_with_vtable(ConstClass(node_vtable2))
@@ -1248,8 +1248,8 @@
         """
         loop = """
         [p0]
-        p41 = getfield_gc(p0, descr=nextdescr)
-        i0 = getfield_gc(p41, descr=valuedescr)
+        p41 = getfield_gc_r(p0, descr=nextdescr)
+        i0 = getfield_gc_i(p41, descr=valuedescr)
         i1 = int_add(i0, 1)
         p1 = new_with_vtable(ConstClass(node_vtable2))
         p2 = new_with_vtable(ConstClass(node_vtable2))
@@ -1266,7 +1266,7 @@
         [i0]
         p0 = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p0, NULL, descr=nextdescr)
-        p2 = getfield_gc(p0, descr=nextdescr)
+        p2 = getfield_gc_r(p0, descr=nextdescr)
         i1 = ptr_eq(p2, NULL)
         jump(i1)
         """
@@ -1285,14 +1285,10 @@
         [i0]
         p0 = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p0, ConstPtr(myptr), descr=nextdescr)
-        p2 = getfield_gc(p0, descr=nextdescr)
+        p2 = getfield_gc_r(p0, descr=nextdescr)
         i1 = ptr_eq(p2, NULL)
         jump(i1)
         """
-        preamble = """
-        [i0]
-        jump()
-        """
         expected = """
         []
         jump()
@@ -1306,7 +1302,7 @@
         p30 = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p30, i28, descr=nextdescr)
         setfield_gc(p3, p30, descr=valuedescr)
-        p45 = getfield_gc(p3, descr=valuedescr)
+        p45 = getfield_gc_r(p3, descr=valuedescr)
         i29 = int_add(i28, 1)
         jump(i29, p45, p3)
         """
@@ -1317,7 +1313,7 @@
         p30 = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p30, i28, descr=nextdescr)
         setfield_gc(p3, p30, descr=valuedescr)
-        p46 = same_as(p30) # This same_as should be killed by backend
+        #p46 = same_as(p30) # This same_as should be killed by backend
         jump(i29, p30, p3)
         """
         expected = """
@@ -1336,10 +1332,10 @@
         [i]
         p1 = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p1, i, descr=valuedescr)
-        i0 = getfield_gc(p1, descr=valuedescr)
+        i0 = getfield_gc_i(p1, descr=valuedescr)
         i1 = int_add(i0, 1)
-        escape(p1)
-        escape(p1)
+        escape_n(p1)
+        escape_n(p1)
         jump(i1)
         """
         expected = """
@@ -1347,8 +1343,8 @@
         i1 = int_add(i, 1)
         p1 = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p1, i, descr=valuedescr)
-        escape(p1)
-        escape(p1)
+        escape_n(p1)
+        escape_n(p1)
         jump(i1)
         """
         self.optimize_loop(ops, expected)
@@ -1356,8 +1352,8 @@
     def test_nonvirtual_2(self):
         ops = """
         [i, p0]
-        i0 = getfield_gc(p0, descr=valuedescr)
-        escape(p0)
+        i0 = getfield_gc_i(p0, descr=valuedescr)
+        escape_n(p0)
         i1 = int_add(i0, i)
         p1 = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p1, i1, descr=valuedescr)
@@ -1365,8 +1361,8 @@
         """
         preamble = """
         [i, p0]
-        i0 = getfield_gc(p0, descr=valuedescr)
-        escape(p0)
+        i0 = getfield_gc_i(p0, descr=valuedescr)
+        escape_n(p0)
         i1 = int_add(i0, i)
         jump(i, i1)
         """
@@ -1374,7 +1370,7 @@
         [i, i1]
         p1 = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p1, i1, descr=valuedescr)
-        escape(p1)
+        escape_n(p1)
         i2 = int_add(i1, i)
         jump(i, i2)
         """
@@ -1385,9 +1381,9 @@
         [i]
         p1 = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p1, i, descr=valuedescr)
-        i1 = getfield_gc(p1, descr=valuedescr)
-        escape(p1)
-        i2 = getfield_gc(p1, descr=valuedescr)
+        i1 = getfield_gc_i(p1, descr=valuedescr)
+        escape_n(p1)
+        i2 = getfield_gc_i(p1, descr=valuedescr)
         i3 = int_add(i1, i2)
         jump(i3)
         """
@@ -1395,8 +1391,8 @@
         [i]
         p1 = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p1, i, descr=valuedescr)
-        escape(p1)
-        i2 = getfield_gc(p1, descr=valuedescr)
+        escape_n(p1)
+        i2 = getfield_gc_i(p1, descr=valuedescr)
         i3 = int_add(i, i2)
         jump(i3)
         """
@@ -1407,18 +1403,18 @@
         [i]
         p1 = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p1, i, descr=valuedescr)
-        i1 = getfield_gc(p1, descr=valuedescr)
+        i1 = getfield_gc_i(p1, descr=valuedescr)
         setfield_gc(p1, 0, descr=valuedescr)
-        escape(p1)
-        i2 = getfield_gc(p1, descr=valuedescr)
+        escape_n(p1)
+        i2 = getfield_gc_i(p1, descr=valuedescr)
         jump(i2)
         """
         expected = """
         [i]
         p1 = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p1, 0, descr=valuedescr)
-        escape(p1)
-        i2 = getfield_gc(p1, descr=valuedescr)
+        escape_n(p1)
+        i2 = getfield_gc_i(p1, descr=valuedescr)
         jump(i2)
         """
         self.optimize_loop(ops, expected)
@@ -1428,7 +1424,7 @@
         [i]
         p1 = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p1, i, descr=valuedescr)
-        i1 = getfield_gc_pure(p1, descr=valuedescr)
+        i1 = getfield_gc_pure_i(p1, descr=valuedescr)
         jump(i1)
         """
         expected = """
@@ -1440,7 +1436,7 @@
     def test_getfield_gc_pure_2(self):
         ops = """
         [i]
-        i1 = getfield_gc_pure(ConstPtr(myptr), descr=valuedescr)
+        i1 = getfield_gc_pure_i(ConstPtr(myptr), descr=valuedescr)
         jump(i1)
         """
         expected = """
@@ -1453,19 +1449,19 @@
     def test_getfield_gc_pure_3(self):
         ops = """
         []
-        p1 = escape()
-        p2 = getfield_gc_pure(p1, descr=nextdescr)
-        escape(p2)
-        p3 = getfield_gc_pure(p1, descr=nextdescr)
-        escape(p3)
+        p1 = escape_r()
+        p2 = getfield_gc_pure_r(p1, descr=nextdescr)
+        escape_n(p2)
+        p3 = getfield_gc_pure_r(p1, descr=nextdescr)
+        escape_n(p3)
         jump()
         """
         expected = """
         []
-        p1 = escape()
-        p2 = getfield_gc_pure(p1, descr=nextdescr)
-        escape(p2)
-        escape(p2)
+        p1 = escape_r()
+        p2 = getfield_gc_pure_r(p1, descr=nextdescr)
+        escape_n(p2)
+        escape_n(p2)
         jump()
         """
         self.optimize_loop(ops, expected)
@@ -1473,19 +1469,19 @@
     def test_getfield_gc_nonpure_2(self):
         ops = """
         [i]
-        i1 = getfield_gc(ConstPtr(myptr), descr=valuedescr)
-        call(i1, descr=nonwritedescr)
+        i1 = getfield_gc_i(ConstPtr(myptr), descr=valuedescr)
+        call_n(i1, descr=nonwritedescr)
         jump(i)
         """
         preamble = """
         [i]
-        i1 = getfield_gc(ConstPtr(myptr), descr=valuedescr)
-        call(i1, descr=nonwritedescr)
+        i1 = getfield_gc_i(ConstPtr(myptr), descr=valuedescr)
+        call_n(i1, descr=nonwritedescr)
         jump(i, i1)
         """
         expected = """
         [i, i1]
-        call(i1, descr=nonwritedescr)
+        call_n(i1, descr=nonwritedescr)
         jump(i, i1)
         """
         self.optimize_loop(ops, expected, preamble)
@@ -1493,12 +1489,12 @@
     def test_varray_boxed1(self):
         ops = """
         [p0, p8]
-        p11 = getfield_gc(p0, descr=otherdescr)
+        p11 = getfield_gc_r(p0, descr=otherdescr)
         guard_nonnull(p11) [p0, p8]
         guard_class(p11, ConstClass(node_vtable2)) [p0, p8]
-        p14 = getfield_gc(p11, descr=otherdescr)
+        p14 = getfield_gc_r(p11, descr=otherdescr)
         guard_isnull(p14) [p0, p8]
-        p18 = getfield_gc(ConstPtr(myptr), descr=otherdescr)
+        p18 = getfield_gc_r(ConstPtr(myptr), descr=otherdescr)
         guard_isnull(p18) [p0, p8]
         p31 = new(descr=ssize)
         setfield_gc(p31, 0, descr=adescr)
@@ -1517,7 +1513,7 @@
     def test_varray_boxed_simplified(self):
         ops = """
         [p0, p8]
-        p18 = getfield_gc(ConstPtr(myptr), descr=otherdescr)
+        p18 = getfield_gc_r(ConstPtr(myptr), descr=otherdescr)
         guard_isnull(p18) [p0, p8]
         p31 = new(descr=ssize)
         p35 = new_with_vtable(ConstClass(node_vtable))
@@ -1554,7 +1550,7 @@
         guard_value(i3, 3) []
         setarrayitem_gc(p1, 1, i1, descr=arraydescr)
         setarrayitem_gc(p1, 0, 25, descr=arraydescr)
-        i2 = getarrayitem_gc(p1, 1, descr=arraydescr)
+        i2 = getarrayitem_gc_i(p1, 1, descr=arraydescr)
         jump(i2)
         """
         expected = """
@@ -1566,9 +1562,9 @@
     def test_varray_clear_unroll_bug(self):
         ops = """
         [p0]
-        i0 = getarrayitem_gc(p0, 0, descr=arraydescr)
-        i1 = getarrayitem_gc(p0, 1, descr=arraydescr)
-        i2 = getarrayitem_gc(p0, 2, descr=arraydescr)
+        i0 = getarrayitem_gc_i(p0, 0, descr=arraydescr)
+        i1 = getarrayitem_gc_i(p0, 1, descr=arraydescr)
+        i2 = getarrayitem_gc_i(p0, 2, descr=arraydescr)
         i3 = int_add(i0, i1)
         i4 = int_add(i3, i2)
         p1 = new_array_clear(3, descr=arraydescr)
@@ -1588,7 +1584,7 @@
         [i1]
         p1 = new_array(2, descr=arraydescr)
         setarrayitem_gc(p1, 0, 25, descr=arraydescr)
-        i2 = getarrayitem_gc(p1, 0, descr=arraydescr)
+        i2 = getarrayitem_gc_i(p1, 0, descr=arraydescr)
         jump(i2)
         """
         preamble = """
@@ -1609,7 +1605,7 @@
         guard_value(i3, 3) []
         setarrayitem_gc(p1, 1, f1, descr=floatarraydescr)
         setarrayitem_gc(p1, 0, 3.5, descr=floatarraydescr)
-        f2 = getarrayitem_gc(p1, 1, descr=floatarraydescr)
+        f2 = getarrayitem_gc_f(p1, 1, descr=floatarraydescr)
         jump(f2)
         """
         expected = """
@@ -1640,7 +1636,7 @@
         p1 = new_array(5, descr=arraydescr)
         setarrayitem_gc(p1, 0, i1, descr=arraydescr)
         setarrayitem_gc(p1, 1, 0, descr=arraydescr)
-        escape(p1)
+        escape_n(p1)
         jump(i1)
         """
         expected = """
@@ -1648,7 +1644,7 @@
         p1 = new_array(5, descr=arraydescr)
         setarrayitem_gc(p1, 0, i1, descr=arraydescr)
         setarrayitem_gc(p1, 1, 0, descr=arraydescr)
-        escape(p1)
+        escape_n(p1)
         jump(i1)
         """
         self.optimize_loop(ops, expected)
@@ -1656,8 +1652,8 @@
     def test_varray_2(self):
         ops = """
         [i0, p1]
-        i1 = getarrayitem_gc(p1, 0, descr=arraydescr)
-        i2 = getarrayitem_gc(p1, 1, descr=arraydescr)
+        i1 = getarrayitem_gc_i(p1, 0, descr=arraydescr)
+        i2 = getarrayitem_gc_i(p1, 1, descr=arraydescr)
         i3 = int_sub(i1, i2)
         guard_value(i3, 15) []
         p2 = new_array(2, descr=arraydescr)
@@ -1667,8 +1663,8 @@
         """
         preamble = """
         [i0, p1]
-        i1 = getarrayitem_gc(p1, 0, descr=arraydescr)
-        i2 = getarrayitem_gc(p1, 1, descr=arraydescr)
+        i1 = getarrayitem_gc_i(p1, 0, descr=arraydescr)
+        i2 = getarrayitem_gc_i(p1, 1, descr=arraydescr)
         i3 = int_sub(i1, i2)
         guard_value(i3, 15) []
         jump(i0)
@@ -1684,22 +1680,22 @@
     def test_p123_array(self):
         ops = """
         [i1, p2, p3]
-        i3 = getarrayitem_gc(p3, 0, descr=arraydescr)
-        escape(i3)
+        i3 = getarrayitem_gc_i(p3, 0, descr=arraydescr)
+        escape_n(i3)
         p1 = new_array(1, descr=arraydescr)
         setarrayitem_gc(p1, 0, i1, descr=arraydescr)
         jump(i1, p1, p2)
         """
         preamble = """
         [i1, p2, p3]
-        i3 = getarrayitem_gc(p3, 0, descr=arraydescr)
-        escape(i3)
+        i3 = getarrayitem_gc_i(p3, 0, descr=arraydescr)
+        escape_n(i3)
         jump(i1, p2)
         """
         expected = """
         [i1, p2]
-        i3 = getarrayitem_gc(p2, 0, descr=arraydescr)
-        escape(i3)
+        i3 = getarrayitem_gc_i(p2, 0, descr=arraydescr)
+        escape_n(i3)
         p1 = new_array(1, descr=arraydescr)
         setarrayitem_gc(p1, 0, i1, descr=arraydescr)
         jump(i1, p1)
@@ -1712,19 +1708,19 @@
         []
         p2 = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p2, 3, descr=valuedescr)
-        i1 = getfield_gc(p2, descr=valuedescr)    # i1 = const 3
+        i1 = getfield_gc_i(p2, descr=valuedescr)    # i1 = const 3
         p1 = new_array(i1, descr=arraydescr)
-        escape(p1)
+        escape_n(p1)
         i2 = arraylen_gc(p1)
-        escape(i2)
+        escape_n(i2)
         jump()
         """
         expected = """
         []
         p1 = new_array(3, descr=arraydescr)
-        escape(p1)
+        escape_n(p1)
         i2 = arraylen_gc(p1)
-        escape(i2)
+        escape_n(i2)
         jump()
         """
         self.optimize_loop(ops, expected)
@@ -1732,21 +1728,21 @@
     def test_vstruct_1(self):
         ops = """
         [i1, p2]
-        i2 = getfield_gc(p2, descr=adescr)
-        escape(i2)
+        i2 = getfield_gc_i(p2, descr=adescr)
+        escape_n(i2)
         p3 = new(descr=ssize)
         setfield_gc(p3, i1, descr=adescr)
         jump(i1, p3)
         """
         preamble = """
         [i1, p2]
-        i2 = getfield_gc(p2, descr=adescr)
-        escape(i2)
+        i2 = getfield_gc_i(p2, descr=adescr)
+        escape_n(i2)
         jump(i1)
         """
         expected = """
         [i1]
-        escape(i1)
+        escape_n(i1)
         jump(i1)
         """
         self.optimize_loop(ops, expected, preamble)
@@ -1754,22 +1750,22 @@
     def test_p123_vstruct(self):
         ops = """
         [i1, p2, p3]
-        i3 = getfield_gc(p3, descr=adescr)
-        escape(i3)
+        i3 = getfield_gc_i(p3, descr=adescr)
+        escape_n(i3)
         p1 = new(descr=ssize)
         setfield_gc(p1, i1, descr=adescr)
         jump(i1, p1, p2)
         """
         preamble = """
         [i1, p2, p3]
-        i3 = getfield_gc(p3, descr=adescr)
-        escape(i3)
+        i3 = getfield_gc_i(p3, descr=adescr)
+        escape_n(i3)
         jump(i1, p2)
         """
         expected = """
         [i1, p2]
-        i3 = getfield_gc(p2, descr=adescr)
-        escape(i3)
+        i3 = getfield_gc_i(p2, descr=adescr)
+        escape_n(i3)
         p1 = new(descr=ssize)
         setfield_gc(p1, i1, descr=adescr)
         jump(i1, p1)
@@ -1780,11 +1776,11 @@
     def test_virtual_raw_malloc_basic(self):
         ops = """
         [i1]
-        i2 = call('malloc', 10, descr=raw_malloc_descr)
+        i2 = call_i('malloc', 10, descr=raw_malloc_descr)
         guard_no_exception() []
         setarrayitem_raw(i2, 0, i1, descr=rawarraydescr)
-        i3 = getarrayitem_raw(i2, 0, descr=rawarraydescr)
-        call('free', i2, descr=raw_free_descr)
+        i3 = getarrayitem_raw_i(i2, 0, descr=rawarraydescr)
+        call_n('free', i2, descr=raw_free_descr)
         jump(i3)
         """
         expected = """
@@ -1797,11 +1793,11 @@
         ops = """
         [i1]
         i5 = int_mul(10, 1)
-        i2 = call('malloc', i5, descr=raw_malloc_descr)
+        i2 = call_i('malloc', i5, descr=raw_malloc_descr)
         guard_no_exception() []
         setarrayitem_raw(i2, 0, i1, descr=rawarraydescr)
-        i3 = getarrayitem_raw(i2, 0, descr=rawarraydescr)
-        call('free', i2, descr=raw_free_descr)
+        i3 = getarrayitem_raw_i(i2, 0, descr=rawarraydescr)
+        call_n('free', i2, descr=raw_free_descr)
         jump(i3)
         """
         expected = """
@@ -1820,7 +1816,7 @@
         setarrayitem_raw(i2, 1, 123, descr=rawarraydescr_char)
         setarrayitem_raw(i2, 1, 789, descr=rawarraydescr_float)
         label('foo') # we expect the buffer to be forced *after* the label
-        escape(i2)
+        escape_n(i2)
         call('free', i2, descr=raw_free_descr)
         jump(i1)
         """
@@ -1833,7 +1829,7 @@
         raw_store(i2, 1, 123, descr=rawarraydescr_char)
         raw_store(i2, 2, 456, descr=rawarraydescr_char)
         raw_store(i2, 8, 789, descr=rawarraydescr_float)
-        escape(i2)
+        escape_n(i2)
         call('free', i2, descr=raw_free_descr)
         jump(i1)
         """
@@ -1932,7 +1928,7 @@
         i3 = int_add(i2, 1) # get a slice of the original buffer
         setarrayitem_raw(i3, 4, 4242, descr=rawarraydescr_char) # write to the 
slice
         label('foo')
-        escape(i3)
+        escape_n(i3)
         jump(i0, i1)
         """
         expected = """
@@ -1945,7 +1941,7 @@
         raw_store(i2, 5, 4242, descr=rawarraydescr_char)
         # this is generated by VirtualRawSliceValue._really_force
         i4 = int_add(i2, 1)
-        escape(i4)
+        escape_n(i4)
         jump(i0, i1)
         """
         self.optimize_loop(ops, expected)
@@ -2035,7 +2031,7 @@
         i0 = call('malloc', 16, descr=raw_malloc_descr)
         guard_no_exception() []
         i1 = int_add(i0, 8)
-        escape(i0)
+        escape_n(i0)
         setarrayitem_raw(i1, 0, f1, descr=rawarraydescr_float)
         jump(f1)
         """
@@ -2043,7 +2039,7 @@
         [f1]
         i0 = call('malloc', 16, descr=raw_malloc_descr)
         #guard_no_exception() []  # XXX should appear
-        escape(i0)
+        escape_n(i0)
         i1 = int_add(i0, 8)
         setarrayitem_raw(i1, 0, f1, descr=rawarraydescr_float)
         jump(f1)
@@ -2053,24 +2049,24 @@
     def test_duplicate_getfield_1(self):
         ops = """
         [p1, p2]
-        i1 = getfield_gc(p1, descr=valuedescr)
-        i2 = getfield_gc(p2, descr=valuedescr)
-        i3 = getfield_gc(p1, descr=valuedescr)
-        i4 = getfield_gc(p2, descr=valuedescr)
-        escape(i1)
-        escape(i2)
-        escape(i3)
-        escape(i4)
+        i1 = getfield_gc_i(p1, descr=valuedescr)
+        i2 = getfield_gc_i(p2, descr=valuedescr)
+        i3 = getfield_gc_i(p1, descr=valuedescr)
+        i4 = getfield_gc_i(p2, descr=valuedescr)
+        escape_n(i1)
+        escape_n(i2)
+        escape_n(i3)
+        escape_n(i4)
         jump(p1, p2)
         """
         expected = """
         [p1, p2]
-        i1 = getfield_gc(p1, descr=valuedescr)
-        i2 = getfield_gc(p2, descr=valuedescr)
-        escape(i1)
-        escape(i2)
-        escape(i1)
-        escape(i2)
+        i1 = getfield_gc_i(p1, descr=valuedescr)
+        i2 = getfield_gc_i(p2, descr=valuedescr)
+        escape_n(i1)
+        escape_n(i2)
+        escape_n(i1)
+        escape_n(i2)
         jump(p1, p2)
         """
         self.optimize_loop(ops, expected)
@@ -2078,10 +2074,10 @@
     def test_duplicate_getfield_2(self):
         ops = """
         [p1, p2, i0]
-        i1 = getfield_gc(p1, descr=valuedescr)
-        i2 = getfield_gc(p2, descr=valuedescr)
-        i3 = getfield_gc(p1, descr=valuedescr)
-        i4 = getfield_gc(p2, descr=valuedescr)
+        i1 = getfield_gc_i(p1, descr=valuedescr)
+        i2 = getfield_gc_i(p2, descr=valuedescr)
+        i3 = getfield_gc_i(p1, descr=valuedescr)
+        i4 = getfield_gc_i(p2, descr=valuedescr)
         i5 = int_add(i3, i4)
         i6 = int_add(i0, i5)
         jump(p1, p2, i6)
@@ -2097,14 +2093,14 @@
         ops = """
         [p1, i1]
         setfield_gc(p1, i1, descr=valuedescr)
-        i2 = getfield_gc(p1, descr=valuedescr)
-        escape(i2)
+        i2 = getfield_gc_i(p1, descr=valuedescr)
+        escape_n(i2)
         jump(p1, i1)
         """
         expected = """
         [p1, i1]
         setfield_gc(p1, i1, descr=valuedescr)
-        escape(i1)
+        escape_n(i1)
         jump(p1, i1)
         """
         self.optimize_loop(ops, expected)
@@ -2114,15 +2110,15 @@
         [p1, p2, i1]
         setfield_gc(p1, i1, descr=valuedescr)
         setfield_gc(p2, p1, descr=nextdescr)
-        i2 = getfield_gc(p1, descr=valuedescr)
-        escape(i2)
+        i2 = getfield_gc_i(p1, descr=valuedescr)
+        escape_n(i2)
         jump(p1, p2, i1)
         """
         expected = """
         [p1, p2, i1]
         setfield_gc(p1, i1, descr=valuedescr)
         setfield_gc(p2, p1, descr=nextdescr)
-        escape(i1)
+        escape_n(i1)
         jump(p1, p2, i1)
         """
         self.optimize_loop(ops, expected)
@@ -2132,8 +2128,8 @@
         [p1, p2, i1, i2]
         setfield_gc(p1, i1, descr=valuedescr)
         setfield_gc(p2, i2, descr=valuedescr)
-        i3 = getfield_gc(p1, descr=valuedescr)
-        escape(i3)
+        i3 = getfield_gc_i(p1, descr=valuedescr)
+        escape_n(i3)
         jump(p1, p2, i1, i3)
         """
         self.optimize_loop(ops, ops)
@@ -2141,19 +2137,19 @@
     def test_duplicate_getfield_mergepoint_has_no_side_effects(self):
         ops = """
         [p1]
-        i1 = getfield_gc(p1, descr=valuedescr)
+        i1 = getfield_gc_i(p1, descr=valuedescr)
         debug_merge_point(15, 0)
-        i2 = getfield_gc(p1, descr=valuedescr)
-        escape(i1)
-        escape(i2)
+        i2 = getfield_gc_i(p1, descr=valuedescr)
+        escape_n(i1)
+        escape_n(i2)
         jump(p1)
         """
         expected = """
         [p1]
-        i1 = getfield_gc(p1, descr=valuedescr)
+        i1 = getfield_gc_i(p1, descr=valuedescr)
         debug_merge_point(15, 0)
-        escape(i1)
-        escape(i1)
+        escape_n(i1)
+        escape_n(i1)
         jump(p1)
         """
         self.optimize_loop(ops, expected)
@@ -2161,21 +2157,21 @@
     def test_duplicate_getfield_ovf_op_does_not_clear(self):
         ops = """
         [p1]
-        i1 = getfield_gc(p1, descr=valuedescr)
+        i1 = getfield_gc_i(p1, descr=valuedescr)
         i2 = int_add_ovf(i1, 14)
         guard_no_overflow() []
-        i3 = getfield_gc(p1, descr=valuedescr)
-        escape(i2)
-        escape(i3)
+        i3 = getfield_gc_i(p1, descr=valuedescr)
+        escape_n(i2)
+        escape_n(i3)
         jump(p1)
         """
         expected = """
         [p1]
-        i1 = getfield_gc(p1, descr=valuedescr)
+        i1 = getfield_gc_i(p1, descr=valuedescr)
         i2 = int_add_ovf(i1, 14)
         guard_no_overflow() []
-        escape(i2)
-        escape(i1)
+        escape_n(i2)
+        escape_n(i1)
         jump(p1)
         """
         self.optimize_loop(ops, expected)
@@ -2183,19 +2179,19 @@
     def test_duplicate_getfield_setarrayitem_does_not_clear(self):
         ops = """
         [p1, p2]
-        i1 = getfield_gc(p1, descr=valuedescr)
+        i1 = getfield_gc_i(p1, descr=valuedescr)
         setarrayitem_gc(p2, 0, p1, descr=arraydescr2)
-        i3 = getfield_gc(p1, descr=valuedescr)
-        escape(i1)
-        escape(i3)
+        i3 = getfield_gc_i(p1, descr=valuedescr)
+        escape_n(i1)
+        escape_n(i3)
         jump(p1, p2)
         """
         expected = """
         [p1, p2]
-        i1 = getfield_gc(p1, descr=valuedescr)
+        i1 = getfield_gc_i(p1, descr=valuedescr)
         setarrayitem_gc(p2, 0, p1, descr=arraydescr2)
-        escape(i1)
-        escape(i1)
+        escape_n(i1)
+        escape_n(i1)
         jump(p1, p2)
         """
         self.optimize_loop(ops, expected)
@@ -2203,17 +2199,17 @@
     def test_duplicate_getfield_constant(self):
         ops = """
         []
-        i1 = getfield_gc(ConstPtr(myptr), descr=valuedescr)
-        i2 = getfield_gc(ConstPtr(myptr), descr=valuedescr)
-        escape(i1)
-        escape(i2)
+        i1 = getfield_gc_i(ConstPtr(myptr), descr=valuedescr)
+        i2 = getfield_gc_i(ConstPtr(myptr), descr=valuedescr)
+        escape_n(i1)
+        escape_n(i2)
         jump()
         """
         expected = """
         []
-        i1 = getfield_gc(ConstPtr(myptr), descr=valuedescr)
-        escape(i1)
-        escape(i1)
+        i1 = getfield_gc_i(ConstPtr(myptr), descr=valuedescr)
+        escape_n(i1)
+        escape_n(i1)
         jump()
         """
         self.optimize_loop(ops, expected)
@@ -2222,17 +2218,17 @@
         ops = """
         [p1]
         guard_value(p1, ConstPtr(myptr)) []
-        i1 = getfield_gc(p1, descr=valuedescr)
-        i2 = getfield_gc(ConstPtr(myptr), descr=valuedescr)
-        escape(i1)
-        escape(i2)
+        i1 = getfield_gc_i(p1, descr=valuedescr)
+        i2 = getfield_gc_i(ConstPtr(myptr), descr=valuedescr)
+        escape_n(i1)
+        escape_n(i2)
         jump(p1)
         """
         expected = """
         []
-        i1 = getfield_gc(ConstPtr(myptr), descr=valuedescr)
-        escape(i1)
-        escape(i1)
+        i1 = getfield_gc_i(ConstPtr(myptr), descr=valuedescr)
+        escape_n(i1)
+        escape_n(i1)
         jump()
         """
         self.optimize_loop(ops, expected)
@@ -2240,11 +2236,11 @@
     def test_duplicate_getfield_sideeffects_1(self):
         ops = """
         [p1]
-        i1 = getfield_gc(p1, descr=valuedescr)
-        escape()
-        i2 = getfield_gc(p1, descr=valuedescr)
-        escape(i1)
-        escape(i2)
+        i1 = getfield_gc_i(p1, descr=valuedescr)
+        escape_n()
+        i2 = getfield_gc_i(p1, descr=valuedescr)
+        escape_n(i1)
+        escape_n(i2)
         jump(p1)
         """
         self.optimize_loop(ops, ops)
@@ -2253,9 +2249,9 @@
         ops = """
         [p1, i1]
         setfield_gc(p1, i1, descr=valuedescr)
-        escape()
-        i2 = getfield_gc(p1, descr=valuedescr)
-        escape(i2)
+        escape_n()
+        i2 = getfield_gc_i(p1, descr=valuedescr)
+        escape_n(i2)
         jump(p1, i1)
         """
         self.optimize_loop(ops, ops)
@@ -2279,16 +2275,16 @@
     def test_duplicate_setfield_1(self):
         ops = """
         [p1]
-        i1 = escape()
-        i2 = escape()
+        i1 = escape_i()
+        i2 = escape_i()
         setfield_gc(p1, i1, descr=valuedescr)
         setfield_gc(p1, i2, descr=valuedescr)
         jump(p1)
         """
         expected = """
         [p1]
-        i1 = escape()
-        i2 = escape()
+        i1 = escape_i()
+        i2 = escape_i()
         setfield_gc(p1, i2, descr=valuedescr)
         jump(p1)
         """
@@ -2298,15 +2294,15 @@
         ops = """
         [p1, i1, i3]
         setfield_gc(p1, i1, descr=valuedescr)
-        i2 = getfield_gc(p1, descr=valuedescr)
+        i2 = getfield_gc_i(p1, descr=valuedescr)
         setfield_gc(p1, i3, descr=valuedescr)
-        escape(i2)
+        escape_n(i2)
         jump(p1, i1, i3)
         """
         expected = """
         [p1, i1, i3]
         setfield_gc(p1, i3, descr=valuedescr)
-        escape(i1)
+        escape_n(i1)
         jump(p1, i1, i3)
         """
         self.optimize_loop(ops, expected)
@@ -2315,9 +2311,9 @@
         ops = """
         [p1, p2, i1, i3]
         setfield_gc(p1, i1, descr=valuedescr)
-        i2 = getfield_gc(p2, descr=valuedescr)
+        i2 = getfield_gc_i(p2, descr=valuedescr)
         setfield_gc(p1, i3, descr=valuedescr)
-        escape(i2)
+        escape_n(i2)
         jump(p1, p2, i1, i3)
         """
         # potential aliasing of p1 and p2 means that we cannot kill the
@@ -2331,38 +2327,38 @@
         #
         # some operations on which the above setfield_gc cannot have effect
         i3 = getarrayitem_gc_pure(p3, 1, descr=arraydescr)
-        i4 = getarrayitem_gc(p3, i3, descr=arraydescr)
+        i4 = getarrayitem_gc_i(p3, i3, descr=arraydescr)
         i5 = int_add(i3, i4)
         setarrayitem_gc(p3, 0, i5, descr=arraydescr)
         setfield_gc(p1, i4, descr=nextdescr)
         #
         setfield_gc(p1, i2, descr=valuedescr)
-        escape()
+        escape_n()
         jump(p1, i1, i2, p3)
         """
         preamble = """
         [p1, i1, i2, p3]
         #
         i3 = getarrayitem_gc_pure(p3, 1, descr=arraydescr)
-        i4 = getarrayitem_gc(p3, i3, descr=arraydescr)
+        i4 = getarrayitem_gc_i(p3, i3, descr=arraydescr)
         i5 = int_add(i3, i4)
         #
         setfield_gc(p1, i2, descr=valuedescr)
         setarrayitem_gc(p3, 0, i5, descr=arraydescr)
         setfield_gc(p1, i4, descr=nextdescr)
-        escape()
+        escape_n()
         jump(p1, i1, i2, p3, i3)
         """
         expected = """
         [p1, i1, i2, p3, i3]
         #
-        i4 = getarrayitem_gc(p3, i3, descr=arraydescr)
+        i4 = getarrayitem_gc_i(p3, i3, descr=arraydescr)
         i5 = int_add(i3, i4)
         #
         setfield_gc(p1, i2, descr=valuedescr)
         setarrayitem_gc(p3, 0, i5, descr=arraydescr)
         setfield_gc(p1, i4, descr=nextdescr)
-        escape()
+        escape_n()
         jump(p1, i1, i2, p3, i3)
         """
         self.optimize_loop(ops, expected, preamble)
@@ -2375,16 +2371,16 @@
         setfield_gc(p0, p1, descr=nextdescr)
         setfield_raw(i1, i1, descr=valuedescr)    # random op with side-effects
         p2 = getfield_gc(p0, descr=nextdescr)
-        i2 = getfield_gc(p2, descr=valuedescr)
+        i2 = getfield_gc_i(p2, descr=valuedescr)
         setfield_gc(p0, NULL, descr=nextdescr)
-        escape(i2)
+        escape_n(i2)
         jump(p0, i1)
         """
         expected = """
         [p0, i1]
         setfield_raw(i1, i1, descr=valuedescr)
         setfield_gc(p0, NULL, descr=nextdescr)
-        escape(i1)
+        escape_n(i1)
         jump(p0, i1)
         """
         self.optimize_loop(ops, expected)
@@ -2393,7 +2389,7 @@
         ops = """
         [p1, i1, i2]
         setfield_gc(p1, i1, descr=valuedescr)
-        escape()
+        escape_n()
         setfield_gc(p1, i2, descr=valuedescr)
         jump(p1, i1, i2)
         """
@@ -2437,7 +2433,7 @@
         guard_true(i3) []
         i4 = int_neg(i2)
         setfield_gc(p1, NULL, descr=nextdescr)
-        escape()
+        escape_n()
         jump(p1, i2, i4)
         """
         preamble = """
@@ -2445,7 +2441,7 @@
         guard_true(i3) [p1]
         i4 = int_neg(i2)
         setfield_gc(p1, NULL, descr=nextdescr)
-        escape()
+        escape_n()
         i5 = same_as(i4)
         jump(p1, i2, i4, i5)
         """
@@ -2453,7 +2449,7 @@
         [p1, i2, i4, i5]
         guard_true(i4) [p1]
         setfield_gc(p1, NULL, descr=nextdescr)
-        escape()
+        escape_n()
         jump(p1, i2, i5, i5)
         """
         self.optimize_loop(ops, expected, preamble)
@@ -2467,7 +2463,7 @@
         guard_true(i3) []
         i4 = int_neg(i2)
         setfield_gc(p1, NULL, descr=nextdescr)
-        escape()
+        escape_n()
         jump(p1, i2, i4)
         """
         preamble = """
@@ -2475,7 +2471,7 @@
         guard_true(i3) [i2, p1]
         i4 = int_neg(i2)
         setfield_gc(p1, NULL, descr=nextdescr)
-        escape()
+        escape_n()
         i5 = same_as(i4)
         jump(p1, i2, i4, i5)
         """
@@ -2483,7 +2479,7 @@
         [p1, i2, i4, i5]
         guard_true(i4) [i2, p1]
         setfield_gc(p1, NULL, descr=nextdescr)
-        escape()
+        escape_n()
         jump(p1, i2, i5, i5)
         """
         self.optimize_loop(ops, expected)
@@ -2539,13 +2535,13 @@
         guard_value(p1, ConstPtr(myptr)) []
         setfield_gc(p1, i1, descr=valuedescr)
         setfield_gc(ConstPtr(myptr), i2, descr=valuedescr)
-        escape()
+        escape_n()
         jump(p1, i1, i2)
         """
         expected = """
         [i1, i2]
         setfield_gc(ConstPtr(myptr), i2, descr=valuedescr)
-        escape()
+        escape_n()
         jump(i1, i2)
         """
         self.optimize_loop(ops, expected)
@@ -2555,14 +2551,14 @@
         [p0, i0, p1, i1, i2]
         setfield_gc(p0, i1, descr=valuedescr)
         copystrcontent(p0, p1, i0, i1, i2)
-        escape()
+        escape_n()
         jump(p0, i0, p1, i1, i2)
         """
         expected = """
         [p0, i0, p1, i1, i2]
         copystrcontent(p0, p1, i0, i1, i2)
         setfield_gc(p0, i1, descr=valuedescr)
-        escape()
+        escape_n()
         jump(p0, i0, p1, i1, i2)
         """
         self.optimize_loop(ops, expected)
@@ -2570,24 +2566,24 @@
     def test_duplicate_getarrayitem_1(self):
         ops = """
         [p1]
-        p2 = getarrayitem_gc(p1, 0, descr=arraydescr2)
-        p3 = getarrayitem_gc(p1, 1, descr=arraydescr2)
-        p4 = getarrayitem_gc(p1, 0, descr=arraydescr2)
-        p5 = getarrayitem_gc(p1, 1, descr=arraydescr2)
-        escape(p2)
-        escape(p3)
-        escape(p4)
-        escape(p5)
+        p2 = getarrayitem_gc_r(p1, 0, descr=arraydescr2)
+        p3 = getarrayitem_gc_r(p1, 1, descr=arraydescr2)
+        p4 = getarrayitem_gc_r(p1, 0, descr=arraydescr2)
+        p5 = getarrayitem_gc_r(p1, 1, descr=arraydescr2)
+        escape_n(p2)
+        escape_n(p3)
+        escape_n(p4)
+        escape_n(p5)
         jump(p1)
         """
         expected = """
         [p1]
-        p2 = getarrayitem_gc(p1, 0, descr=arraydescr2)
-        p3 = getarrayitem_gc(p1, 1, descr=arraydescr2)
-        escape(p2)
-        escape(p3)
-        escape(p2)
-        escape(p3)
+        p2 = getarrayitem_gc_r(p1, 0, descr=arraydescr2)
+        p3 = getarrayitem_gc_r(p1, 1, descr=arraydescr2)
+        escape_n(p2)
+        escape_n(p3)
+        escape_n(p2)
+        escape_n(p3)
         jump(p1)
         """
         self.optimize_loop(ops, expected)
@@ -2595,10 +2591,10 @@
     def test_duplicate_getarrayitem_2(self):
         ops = """
         [p1, i0]
-        i2 = getarrayitem_gc(p1, 0, descr=arraydescr2)
-        i3 = getarrayitem_gc(p1, 1, descr=arraydescr2)
-        i4 = getarrayitem_gc(p1, 0, descr=arraydescr2)
-        i5 = getarrayitem_gc(p1, 1, descr=arraydescr2)
+        i2 = getarrayitem_gc_i(p1, 0, descr=arraydescr2)
+        i3 = getarrayitem_gc_i(p1, 1, descr=arraydescr2)
+        i4 = getarrayitem_gc_i(p1, 0, descr=arraydescr2)
+        i5 = getarrayitem_gc_i(p1, 1, descr=arraydescr2)
         i6 = int_add(i3, i4)
         i7 = int_add(i0, i6)
         jump(p1, i7)
@@ -2615,13 +2611,13 @@
         [p1, p2]
         setarrayitem_gc(p1, 0, p2, descr=arraydescr2)
         p3 = getarrayitem_gc(p1, 0, descr=arraydescr2)
-        escape(p3)
+        escape_n(p3)
         jump(p1, p3)
         """
         expected = """
         [p1, p2]
         setarrayitem_gc(p1, 0, p2, descr=arraydescr2)
-        escape(p2)
+        escape_n(p2)
         jump(p1, p2)
         """
         self.optimize_loop(ops, expected)
@@ -2634,8 +2630,8 @@
         setarrayitem_gc(p1, i1, p3, descr=arraydescr2)
         p4 = getarrayitem_gc(p1, 0, descr=arraydescr2)
         p5 = getarrayitem_gc(p1, i1, descr=arraydescr2)
-        escape(p4)
-        escape(p5)
+        escape_n(p4)
+        escape_n(p5)
         jump(p1, p2, p3, i1)
         """
         expected = """
@@ -2643,8 +2639,8 @@
         setarrayitem_gc(p1, 0, p2, descr=arraydescr2)
         setarrayitem_gc(p1, i1, p3, descr=arraydescr2)
         p4 = getarrayitem_gc(p1, 0, descr=arraydescr2)
-        escape(p4)
-        escape(p3)
+        escape_n(p4)
+        escape_n(p3)
         jump(p1, p2, p3, i1)
         """
         self.optimize_loop(ops, expected)
@@ -2658,9 +2654,9 @@
         p5 = getarrayitem_gc(p1, i1, descr=arraydescr2)
         p6 = getarrayitem_gc(p1, 0, descr=arraydescr2)
         p7 = getarrayitem_gc(p1, 1, descr=arraydescr2)
-        escape(p5)
-        escape(p6)
-        escape(p7)
+        escape_n(p5)
+        escape_n(p6)
+        escape_n(p7)
         jump(p1, p2, p3, p4, i1)
         """
         expected = """
@@ -2669,9 +2665,9 @@
         setarrayitem_gc(p1, 0, p3, descr=arraydescr2)
         setarrayitem_gc(p1, 1, p4, descr=arraydescr2)
         p5 = getarrayitem_gc(p1, i1, descr=arraydescr2)
-        escape(p5)
-        escape(p3)
-        escape(p4)
+        escape_n(p5)
+        escape_n(p3)
+        escape_n(p4)
         jump(p1, p2, p3, p4, i1)
         """
         self.optimize_loop(ops, expected)
@@ -2682,17 +2678,17 @@
         p3 = getarrayitem_gc(p1, 0, descr=arraydescr2)
         i4 = getfield_gc_pure(ConstPtr(myptr), descr=valuedescr)
         p5 = getarrayitem_gc(p1, 0, descr=arraydescr2)
-        escape(p3)
-        escape(i4)
-        escape(p5)
+        escape_n(p3)
+        escape_n(i4)
+        escape_n(p5)
         jump(p1, p2)
         """
         expected = """
         [p1, p2]
         p3 = getarrayitem_gc(p1, 0, descr=arraydescr2)
-        escape(p3)
-        escape(5)
-        escape(p3)
+        escape_n(p3)
+        escape_n(5)
+        escape_n(p3)
         jump(p1, p2)
         """
         self.optimize_loop(ops, expected)
@@ -2704,16 +2700,16 @@
         setarrayitem_gc(p2, 1, p4, descr=arraydescr2)
         p5 = getarrayitem_gc(p1, 0, descr=arraydescr2)
         p6 = getarrayitem_gc(p2, 1, descr=arraydescr2)
-        escape(p5)
-        escape(p6)
+        escape_n(p5)
+        escape_n(p6)
         jump(p1, p2, p3, p4, i1)
         """
         expected = """
         [p1, p2, p3, p4, i1]
         setarrayitem_gc(p1, 0, p3, descr=arraydescr2)
         setarrayitem_gc(p2, 1, p4, descr=arraydescr2)
-        escape(p3)
-        escape(p4)
+        escape_n(p3)
+        escape_n(p4)
         jump(p1, p2, p3, p4, i1)
         """
         self.optimize_loop(ops, expected)
@@ -2753,19 +2749,19 @@
         [i0, p1]
         p4 = getfield_gc(p1, descr=nextdescr)
         guard_nonnull(p4) []
-        escape(p4)
+        escape_n(p4)
         #
         p2 = new_with_vtable(ConstClass(node_vtable))
-        p3 = escape()
+        p3 = escape_r()
         setfield_gc(p2, p3, descr=nextdescr)
         jump(i0, p2)
         """
         expected = """
         [i0, p4]
         guard_nonnull(p4) []
-        escape(p4)
+        escape_n(p4)
         #
-        p3 = escape()
+        p3 = escape_r()
         jump(i0, p3)
         """
         self.optimize_loop(ops, expected)
@@ -2775,19 +2771,19 @@
         [i0, p1]
         p4 = getarrayitem_gc(p1, 0, descr=arraydescr2)
         guard_nonnull(p4) []
-        escape(p4)
+        escape_n(p4)
         #
         p2 = new_array(1, descr=arraydescr2)
-        p3 = escape()
+        p3 = escape_r()
         setarrayitem_gc(p2, 0, p3, descr=arraydescr2)
         jump(i0, p2)
         """
         expected = """
         [i0, p4]
         guard_nonnull(p4) []
-        escape(p4)
+        escape_n(p4)
         #
-        p3 = escape()
+        p3 = escape_r()
         jump(i0, p3)
         """
         self.optimize_loop(ops, expected)
@@ -2807,7 +2803,7 @@
         p1a = new_with_vtable(ConstClass(node_vtable2))
         p2a = new_with_vtable(ConstClass(node_vtable))
         p3a = new_with_vtable(ConstClass(node_vtable))
-        escape(p3a)
+        escape_n(p3a)
         setfield_gc(p1a, p2a, descr=nextdescr)
         setfield_gc(p1a, p3a, descr=otherdescr)
         jump(p1a)
@@ -2821,7 +2817,7 @@
         guard_class(p3, ConstClass(node_vtable)) []
         p3a = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p3, p2, descr=otherdescr)
-        escape(p3a)
+        escape_n(p3a)
         jump(p3a)
         """
         expected = """
@@ -2835,7 +2831,7 @@
         p3anew = new_with_vtable(ConstClass(node_vtable))
         p2 = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p3a, p2, descr=otherdescr) # p3a.other = p2a
-        escape(p3anew)
+        escape_n(p3anew)
         jump(p3anew)
         """
         #self.optimize_loop(ops, expected) # XXX Virtual(node_vtable2, 
nextdescr=Not, otherdescr=Not)
@@ -2856,7 +2852,7 @@
         p2a = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p3, p2a, descr=otherdescr)
         p3a = new_with_vtable(ConstClass(node_vtable))
-        escape(p3a)
+        escape_n(p3a)
         setfield_gc(p1a, p2a, descr=nextdescr)
         setfield_gc(p1a, p3a, descr=otherdescr)
         jump(p1a)
@@ -2872,7 +2868,7 @@
         p3a = new_with_vtable(ConstClass(node_vtable))
         p2a = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p3, p2a, descr=otherdescr)
-        escape(p3a)
+        escape_n(p3a)
         # setfield_gc(p1a, p2a, descr=nextdescr)
         # setfield_gc(p1a, p3a, descr=otherdescr)
         jump(p2a, p3a)
@@ -2882,7 +2878,7 @@
         p3a = new_with_vtable(ConstClass(node_vtable))
         p2a = new_with_vtable(ConstClass(node_vtable))
         setfield_gc(p3, p2a, descr=otherdescr)
-        escape(p3a)
+        escape_n(p3a)
         jump(p2a, p3a)
         """
         self.optimize_loop(ops, expected, preamble)
@@ -2910,7 +2906,7 @@
     def test_bug_5(self):
         ops = """
         [p0]
-        i0 = escape()
+        i0 = escape_i()
         i2 = getfield_gc(p0, descr=valuedescr)
         i4 = int_add(i2, 1)
         setfield_gc(p0, i4, descr=valuedescr)
@@ -2918,18 +2914,18 @@
         i6 = getfield_gc(p0, descr=valuedescr)
         i8 = int_sub(i6, 1)
         setfield_gc(p0, i8, descr=valuedescr)
-        escape()
+        escape_n()
         jump(p0)
         """
         expected = """
         [p0]
-        i0 = escape()
+        i0 = escape_i()
         i2 = getfield_gc(p0, descr=valuedescr)
         i4 = int_add(i2, 1)
         setfield_gc(p0, i4, descr=valuedescr)
         guard_true(i0) []
         setfield_gc(p0, i2, descr=valuedescr)
-        escape()
+        escape_n()
         jump(p0)
         """
         self.optimize_loop(ops, expected)
@@ -2950,7 +2946,7 @@
         guard_class(p1, ConstClass(node_vtable2)) []
         #
         p2 = new_with_vtable(ConstClass(node_vtable))
-        escape(p2)      # prevent it from staying Virtual
+        escape_n(p2)      # prevent it from staying Virtual
         jump(p2)
         """
         self.raises(InvalidLoop, self.optimize_loop, ops, "crash!")
@@ -3126,8 +3122,8 @@
         i4 = int_add(i2, 1)
         i4b = int_is_true(i4)
         guard_true(i4b) []
-        escape(i3)
-        escape(i4)
+        escape_n(i3)
+        escape_n(i4)
         guard_true(i1) []
         guard_true(i2) []
         jump(p1, p2)
@@ -3138,15 +3134,15 @@
         i3 = int_add(i1, 1)
         i3b = int_is_true(i3)
         guard_true(i3b) []
-        escape(i3)
-        escape(i3)
+        escape_n(i3)
+        escape_n(i3)
         guard_true(i1) []
         jump(p1, p2)
         """
         expected = """
         [p1, p2]
-        escape(2)
-        escape(2)
+        escape_n(2)
+        escape_n(2)
         jump(p1, p2)
         """
         self.optimize_loop(ops, expected, preamble)
@@ -3186,8 +3182,8 @@
         guard_no_overflow() []
         i4b = int_is_true(i4)
         guard_true(i4b) []
-        escape(i3)
-        escape(i4)
+        escape_n(i3)
+        escape_n(i4)
         jump(i1)
         """
         preamble = """
@@ -3196,14 +3192,14 @@
         guard_no_overflow() []
         i3b = int_is_true(i3)
         guard_true(i3b) []
-        escape(i3)
-        escape(i3)
+        escape_n(i3)
+        escape_n(i3)
         jump(i1, i3)
         """
         expected = """
         [i1, i3]
-        escape(i3)
-        escape(i3)
+        escape_n(i3)
+        escape_n(i3)
         jump(i1, i3)
         """
         self.optimize_loop(ops, expected, preamble)
@@ -3220,8 +3216,8 @@
         guard_no_overflow() []
         i4b = int_is_true(i4)
         guard_true(i4b) []
-        escape(i3)
-        escape(i4)
+        escape_n(i3)
+        escape_n(i4)
         jump(i1, p1)
         """
         preamble = """
@@ -3231,15 +3227,15 @@
         i3b = int_is_true(i3)
         guard_true(i3b) []
         setfield_gc(p1, i1, descr=valuedescr)
-        escape(i3)
-        escape(i3)
+        escape_n(i3)
+        escape_n(i3)
         jump(i1, p1, i3)
         """
         expected = """
         [i1, p1, i3]
         setfield_gc(p1, i1, descr=valuedescr)
-        escape(i3)
-        escape(i3)
+        escape_n(i3)
+        escape_n(i3)
         jump(i1, p1, i3)
         """
         self.optimize_loop(ops, expected, preamble)
@@ -3392,12 +3388,12 @@
         [i0]
         i1 = int_sub_ovf(i0, i0)
         guard_no_overflow() []
-        escape(i1)
+        escape_n(i1)
         jump(i1)
         """
         expected = """
         []
-        escape(0)
+        escape_n(0)
         jump()
         """
         self.optimize_loop(ops, expected)
@@ -3451,16 +3447,16 @@
         i1 = getfield_gc(p1, descr=valuedescr)
         i2 = call(i1, descr=nonwritedescr)
         i3 = getfield_gc(p1, descr=valuedescr)
-        escape(i1)
-        escape(i3)
+        escape_n(i1)
+        escape_n(i3)
         jump(p1, p2)
         """
         expected = """
         [p1, p2]
         i1 = getfield_gc(p1, descr=valuedescr)
         i2 = call(i1, descr=nonwritedescr)
-        escape(i1)
-        escape(i1)
+        escape_n(i1)
+        escape_n(i1)
         jump(p1, p2)
         """
         self.optimize_loop(ops, expected)
@@ -3473,10 +3469,10 @@
         i3 = call(i1, descr=writeadescr)
         i4 = getfield_gc(p1, descr=adescr)
         i5 = getfield_gc(p1, descr=bdescr)
-        escape(i1)
-        escape(i2)
-        escape(i4)
-        escape(i5)
+        escape_n(i1)
+        escape_n(i2)
+        escape_n(i4)
+        escape_n(i5)
         jump(p1, p2)
         """
         expected = """
@@ -3485,10 +3481,10 @@
         i2 = getfield_gc(p1, descr=bdescr)
         i3 = call(i1, descr=writeadescr)
         i4 = getfield_gc(p1, descr=adescr)
-        escape(i1)
-        escape(i2)
-        escape(i4)
-        escape(i2)
+        escape_n(i1)
+        escape_n(i2)
+        escape_n(i4)
+        escape_n(i2)
         jump(p1, p2)
         """
         self.optimize_loop(ops, expected)
@@ -3501,10 +3497,10 @@
         i3 = call(i1, descr=writeadescr)
         p5 = getarrayitem_gc(p1, 0, descr=arraydescr2)
         p6 = getarrayitem_gc(p2, 1, descr=arraydescr2)
-        escape(p3)
-        escape(p4)
-        escape(p5)
-        escape(p6)
+        escape_n(p3)
+        escape_n(p4)
+        escape_n(p5)
+        escape_n(p6)
         jump(p1, p2, i1)
         """
         expected = """
@@ -3512,10 +3508,10 @@
         p3 = getarrayitem_gc(p1, 0, descr=arraydescr2)
         p4 = getarrayitem_gc(p2, 1, descr=arraydescr2)
         i3 = call(i1, descr=writeadescr)
-        escape(p3)
-        escape(p4)
-        escape(p3)
-        escape(p4)
+        escape_n(p3)
+        escape_n(p4)
+        escape_n(p3)
+        escape_n(p4)
         jump(p1, p2, i1)
         """
         self.optimize_loop(ops, expected)
@@ -3525,32 +3521,32 @@
         [p1, p2, i1]
         p3 = getarrayitem_gc(p2, 0, descr=arraydescr2)
         p4 = getarrayitem_gc(p2, 1, descr=arraydescr2)
-        i2 = getarrayitem_gc(p1, 1, descr=arraydescr)
+        i2 = getarrayitem_gc_i(p1, 1, descr=arraydescr)
         i3 = call(i1, descr=writearraydescr)
         p5 = getarrayitem_gc(p2, 0, descr=arraydescr2)
         p6 = getarrayitem_gc(p2, 1, descr=arraydescr2)
-        i4 = getarrayitem_gc(p1, 1, descr=arraydescr)
-        escape(p3)
-        escape(p4)
-        escape(p5)
-        escape(p6)
-        escape(i2)
-        escape(i4)
+        i4 = getarrayitem_gc_i(p1, 1, descr=arraydescr)
+        escape_n(p3)
+        escape_n(p4)
+        escape_n(p5)
+        escape_n(p6)
+        escape_n(i2)
+        escape_n(i4)
         jump(p1, p2, i1)
         """
         expected = """
         [p1, p2, i1]
         p3 = getarrayitem_gc(p2, 0, descr=arraydescr2)
         p4 = getarrayitem_gc(p2, 1, descr=arraydescr2)
-        i2 = getarrayitem_gc(p1, 1, descr=arraydescr)
+        i2 = getarrayitem_gc_i(p1, 1, descr=arraydescr)
         i3 = call(i1, descr=writearraydescr)
-        i4 = getarrayitem_gc(p1, 1, descr=arraydescr)
-        escape(p3)
-        escape(p4)
-        escape(p3)
-        escape(p4)
-        escape(i2)
-        escape(i4)
+        i4 = getarrayitem_gc_i(p1, 1, descr=arraydescr)
+        escape_n(p3)
+        escape_n(p4)
+        escape_n(p3)
+        escape_n(p4)
+        escape_n(i2)
+        escape_n(i4)
         jump(p1, p2, i1)
         """
         self.optimize_loop(ops, expected)
@@ -3689,24 +3685,24 @@
         call_pure_results = {tuple(arg_consts): ConstInt(42)}
         ops = '''
         [i0, i1, i2]
-        escape(i1)
-        escape(i2)
+        escape_n(i1)
+        escape_n(i2)
         i3 = call_pure(123456, 4, 5, 6, descr=plaincalldescr)
         i4 = call_pure(123456, 4, i0, 6, descr=plaincalldescr)
         jump(i0, i3, i4)
         '''
         preamble = '''
         [i0, i1, i2]
-        escape(i1)
-        escape(i2)
+        escape_n(i1)
+        escape_n(i2)
         i4 = call(123456, 4, i0, 6, descr=plaincalldescr)
         i153 = same_as(i4)
         jump(i0, i4, i153)
         '''
         expected = '''
         [i0, i4, i5]
-        escape(42)
-        escape(i4)
+        escape_n(42)
+        escape_n(i4)
         jump(i0, i5, i5)
         '''
         self.optimize_loop(ops, expected, preamble, call_pure_results)
@@ -3717,8 +3713,8 @@
         call_pure_results = {tuple(arg_consts): ConstInt(42)}
         ops = '''
         [i0, i1, i2]
-        escape(i1)
-        escape(i2)
+        escape_n(i1)
+        escape_n(i2)
         i3 = call_pure(123456, 4, 5, 6, descr=plaincalldescr)
         guard_no_exception() []
         i4 = call_pure(123456, 4, i0, 6, descr=plaincalldescr)
@@ -3727,8 +3723,8 @@
         '''
         preamble = '''
         [i0, i1, i2]
-        escape(i1)
-        escape(i2)
+        escape_n(i1)
+        escape_n(i2)
         i4 = call(123456, 4, i0, 6, descr=plaincalldescr)
         guard_no_exception() []
         i155 = same_as(i4)
@@ -3736,8 +3732,8 @@
         '''
         expected = '''
         [i0, i2, i3]
-        escape(42)
-        escape(i2)
+        escape_n(42)
+        escape_n(i2)
         jump(i0, i3, i3)
         '''
         self.optimize_loop(ops, expected, preamble, call_pure_results)
@@ -3748,7 +3744,7 @@
         ops = '''
         [p1, i1, i2]
         p2 = call_pure(0, p1, i1, i2, descr=strslicedescr)
-        escape(p2)
+        escape_n(p2)
         jump(p1, i1, i2)
         '''
         preamble = '''
@@ -3756,14 +3752,14 @@
         i6 = int_sub(i2, i1)
         p2 = newstr(i6)
         copystrcontent(p1, p2, i1, 0, i6)
-        escape(p2)
+        escape_n(p2)
         jump(p1, i1, i2, i6)
         '''
         expected = '''
         [p1, i1, i2, i6]
         p2 = newstr(i6)
         copystrcontent(p1, p2, i1, 0, i6)
-        escape(p2)
+        escape_n(p2)
         jump(p1, i1, i2, i6)
         '''
         self.optimize_loop(ops, expected, preamble)
@@ -3789,7 +3785,7 @@
         ops = """
         [p1]
         p2 = virtual_ref(p1, 5)
-        escape(p2)
+        escape_n(p2)
         virtual_ref_finish(p2, p1)
         jump(p1)
         """
@@ -3799,7 +3795,7 @@
         p2 = new_with_vtable(ConstClass(jit_virtual_ref_vtable))
         setfield_gc(p2, NULL, descr=virtualforceddescr)
         setfield_gc(p2, p0, descr=virtualtokendescr)
-        escape(p2)
+        escape_n(p2)
         setfield_gc(p2, p1, descr=virtualforceddescr)
         setfield_gc(p2, NULL, descr=virtualtokendescr)
         jump(p1)
@@ -3909,7 +3905,7 @@
         guard_no_exception(descr=fdescr) [p2, p1]
         virtual_ref_finish(p2, p1)
         setfield_gc(p0, NULL, descr=refdescr)
-        escape()
+        escape_n()
         jump(p0, i1)
         """
         preamble = """
@@ -3918,7 +3914,7 @@
         call(i1, descr=nonwritedescr)
         guard_no_exception(descr=fdescr) [p3, i1, p0]
         setfield_gc(p0, NULL, descr=refdescr)
-        escape()
+        escape_n()
         jump(p0, i1)
         """
         expected = """
@@ -3927,7 +3923,7 @@
         call(i1, descr=nonwritedescr)
         guard_no_exception(descr=fdescr2) [p3, i1, p0]
         setfield_gc(p0, NULL, descr=refdescr)
-        escape()
+        escape_n()
         jump(p0, i1)
         """
         self.optimize_loop(ops, expected, preamble)
@@ -3948,7 +3944,7 @@
         [i1]
         p1 = new_with_vtable(ConstClass(node_vtable))
         p2 = virtual_ref(p1, 7)
-        escape(p2)
+        escape_n(p2)
         virtual_ref_finish(p2, p1)
         call_may_force(i1, descr=mayforcevirtdescr)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to