[pypy-svn] r74618 - in pypy/branch/blackhole-improvement/pypy/jit/codewriter: . test

arigo at codespeak.net arigo at codespeak.net
Fri May 21 11:47:57 CEST 2010


Author: arigo
Date: Fri May 21 11:47:56 2010
New Revision: 74618

Modified:
   pypy/branch/blackhole-improvement/pypy/jit/codewriter/jtransform.py
   pypy/branch/blackhole-improvement/pypy/jit/codewriter/test/test_jtransform.py
Log:
Update to the new meaning of -live-.


Modified: pypy/branch/blackhole-improvement/pypy/jit/codewriter/jtransform.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/codewriter/jtransform.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/codewriter/jtransform.py	Fri May 21 11:47:56 2010
@@ -206,15 +206,15 @@
     rewrite_op_float_ge  = _rewrite_symmetric
 
     def rewrite_op_int_add_ovf(self, op):
-        op0 = SpaceOperation('-live-', op.args[:], None)
-        op1 = self._rewrite_symmetric(op)
+        op0 = self._rewrite_symmetric(op)
+        op1 = SpaceOperation('-live-', [], None)
         return [op0, op1]
 
     rewrite_op_int_mul_ovf = rewrite_op_int_add_ovf
 
     def rewrite_op_int_sub_ovf(self, op):
-        op0 = SpaceOperation('-live-', op.args[:], None)
-        return [op0, op]
+        op1 = SpaceOperation('-live-', [], None)
+        return [op, op1]
 
     # ----------
     # Various kinds of calls
@@ -270,7 +270,7 @@
         op1 = self.rewrite_call(op, 'residual_call',
                                 [op.args[0], calldescr] + extraargs)
         if self.callcontrol.calldescr_canraise(calldescr):
-            op1 = [SpaceOperation('-live-', [], None), op1]
+            op1 = [op1, SpaceOperation('-live-', [], None)]
         return op1
 
     def handle_regular_call(self, op):
@@ -280,8 +280,8 @@
         [targetgraph] = self.callcontrol.graphs_from(op)
         jitcode = self.callcontrol.get_jitcode(targetgraph,
                                                called_from=self.graph)
-        op0 = SpaceOperation('-live-', [], None)
-        op1 = self.rewrite_call(op, 'inline_call', [jitcode])
+        op0 = self.rewrite_call(op, 'inline_call', [jitcode])
+        op1 = SpaceOperation('-live-', [], None)
         return [op0, op1]
 
     def handle_builtin_call(self, op):
@@ -298,8 +298,8 @@
             jitcode = self.callcontrol.get_jitcode(targetgraph,
                                                    called_from=self.graph)
             lst.append(jitcode)
-        op0 = SpaceOperation('-live-', [op.args[0]], None)
-        op1 = SpaceOperation('int_guard_value', [op.args[0]], None)
+        op0 = SpaceOperation('int_guard_value', [op.args[0]], None)
+        op1 = SpaceOperation('-live-', [op.args[0]], None)
         op2 = self.handle_residual_call(op, [IndirectCallTargets(lst)])
         result = [op0, op1]
         if isinstance(op2, list):
@@ -345,8 +345,8 @@
         if hints.get('promote') and op.args[0].concretetype is not lltype.Void:
             assert op.args[0].concretetype != lltype.Ptr(rstr.STR)
             kind = getkind(op.args[0].concretetype)
-            op0 = SpaceOperation('-live-', [op.args[0]], None)
-            op1 = SpaceOperation('%s_guard_value' % kind, [op.args[0]], None)
+            op0 = SpaceOperation('%s_guard_value' % kind, [op.args[0]], None)
+            op1 = SpaceOperation('-live-', [op.args[0]], None)
             # the special return value None forces op.result to be considered
             # equal to op.args[0]
             return [op0, op1, None]
@@ -463,8 +463,8 @@
                 op.args[0].concretetype.TO._hints.get('typeptr'))
 
     def handle_getfield_typeptr(self, op):
-        op0 = SpaceOperation('-live-', [op.args[0]], None)
-        op1 = SpaceOperation('guard_class', [op.args[0]], op.result)
+        op0 = SpaceOperation('guard_class', [op.args[0]], op.result)
+        op1 = SpaceOperation('-live-', [op.args[0]], None)
         return [op0, op1]
 
     def rewrite_op_malloc(self, op):
@@ -656,9 +656,9 @@
         for v in op.args[2:2+num_green_args]:
             if isinstance(v, Variable) and v.concretetype is not lltype.Void:
                 kind = getkind(v.concretetype)
-                ops.append(SpaceOperation('-live-', [v], None))
                 ops.append(SpaceOperation('%s_guard_value' % kind,
                                           [v], None))
+                ops.append(SpaceOperation('-live-', [v], None))
         args = (self.make_three_lists(op.args[2:2+num_green_args]) +
                 self.make_three_lists(op.args[2+num_green_args:]))
         ops.append(SpaceOperation('jit_merge_point', args, None))

Modified: pypy/branch/blackhole-improvement/pypy/jit/codewriter/test/test_jtransform.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/codewriter/test/test_jtransform.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/codewriter/test/test_jtransform.py	Fri May 21 11:47:56 2010
@@ -180,16 +180,16 @@
             op = SpaceOperation('int_add_nonneg_ovf', [v1, v2], v3)
             oplist = Transformer(FakeCPU()).rewrite_operation(op)
             op0, op1 = oplist
-            assert op0.opname == '-live-'
-            assert op0.args == [v1, v2]
-            assert op0.result is None
-            assert op1.opname == 'int_add_ovf'
+            assert op0.opname == 'int_add_ovf'
             if isinstance(v1, Constant) and isinstance(v2, Variable):
-                assert op1.args == [v2, v1]
-                assert op1.result == v3
+                assert op0.args == [v2, v1]
+                assert op0.result == v3
             else:
-                assert op1.args == [v1, v2]
-                assert op1.result == v3
+                assert op0.args == [v1, v2]
+                assert op0.result == v3
+            assert op1.opname == '-live-'
+            assert op1.args == []
+            assert op1.result is None
 
 def test_calls():
     for RESTYPE in [lltype.Signed, rclass.OBJECTPTR,
@@ -227,21 +227,21 @@
     tr = Transformer(FakeCPU(), FakeResidualCallControl())
     oplist = tr.rewrite_operation(op)
     op0, op1 = oplist
-    assert op0.opname == '-live-'
-    assert op0.args == []
     reskind = getkind(restype)[0]
-    assert op1.opname == 'residual_call_%s_%s' % (expectedkind, reskind)
-    assert op1.result == op.result
-    assert op1.args[0] == op.args[0]
-    assert op1.args[1] == 'calldescr'
-    assert len(op1.args) == 2 + len(expectedkind)
-    for sublist, kind1 in zip(op1.args[2:], expectedkind):
+    assert op0.opname == 'residual_call_%s_%s' % (expectedkind, reskind)
+    assert op0.result == op.result
+    assert op0.args[0] == op.args[0]
+    assert op0.args[1] == 'calldescr'
+    assert len(op0.args) == 2 + len(expectedkind)
+    for sublist, kind1 in zip(op0.args[2:], expectedkind):
         assert sublist.kind.startswith(kind1)
         assert list(sublist) == [v for v in op.args[1:]
                                  if getkind(v.concretetype) == sublist.kind]
     for v in op.args[1:]:
         kind = getkind(v.concretetype)
         assert kind == 'void' or kind[0] in expectedkind
+    assert op1.opname == '-live-'
+    assert op1.args == []
 
 def direct_call_test(argtypes, restype, expectedkind):
     op = get_direct_call_op(argtypes, restype)
@@ -249,20 +249,20 @@
     tr.graph = 'someinitialgraph'
     oplist = tr.rewrite_operation(op)
     op0, op1 = oplist
-    assert op0.opname == '-live-'
-    assert op0.args == []
     reskind = getkind(restype)[0]
-    assert op1.opname == 'inline_call_%s_%s' % (expectedkind, reskind)
-    assert op1.result == op.result
-    assert op1.args[0] == 'somejitcode'
-    assert len(op1.args) == 1 + len(expectedkind)
-    for sublist, kind1 in zip(op1.args[1:], expectedkind):
+    assert op0.opname == 'inline_call_%s_%s' % (expectedkind, reskind)
+    assert op0.result == op.result
+    assert op0.args[0] == 'somejitcode'
+    assert len(op0.args) == 1 + len(expectedkind)
+    for sublist, kind1 in zip(op0.args[1:], expectedkind):
         assert sublist.kind.startswith(kind1)
         assert list(sublist) == [v for v in op.args[1:]
                                  if getkind(v.concretetype) == sublist.kind]
     for v in op.args[1:]:
         kind = getkind(v.concretetype)
         assert kind == 'void' or kind[0] in expectedkind
+    assert op1.opname == '-live-'
+    assert op1.args == []
 
 def indirect_residual_call_test(argtypes, restype, expectedkind):
     # an indirect call that is residual in all cases is very similar to
@@ -275,21 +275,21 @@
     tr.graph = 'someinitialgraph'
     oplist = tr.rewrite_operation(op)
     op0, op1 = oplist
-    assert op0.opname == '-live-'
-    assert op0.args == []
     reskind = getkind(restype)[0]
-    assert op1.opname == 'residual_call_%s_%s' % (expectedkind, reskind)
-    assert op1.result == op.result
-    assert op1.args[0] == op.args[0]
-    assert op1.args[1] == 'calldescr'
-    assert len(op1.args) == 2 + len(expectedkind)
-    for sublist, kind1 in zip(op1.args[2:], expectedkind):
+    assert op0.opname == 'residual_call_%s_%s' % (expectedkind, reskind)
+    assert op0.result == op.result
+    assert op0.args[0] == op.args[0]
+    assert op0.args[1] == 'calldescr'
+    assert len(op0.args) == 2 + len(expectedkind)
+    for sublist, kind1 in zip(op0.args[2:], expectedkind):
         assert sublist.kind.startswith(kind1)
         assert list(sublist) == [v for v in op.args[1:]
                                  if getkind(v.concretetype)==sublist.kind]
     for v in op.args[1:]:
         kind = getkind(v.concretetype)
         assert kind == 'void' or kind[0] in expectedkind
+    assert op1.opname == '-live-'
+    assert op1.args == []
 
 def indirect_regular_call_test(argtypes, restype, expectedkind):
     # a regular indirect call is preceded by a guard_value on the
@@ -303,29 +303,29 @@
     tr.graph = 'someinitialgraph'
     oplist = tr.rewrite_operation(op)
     op0gv, op1gv, op0, op1 = oplist
-    assert op0gv.opname == '-live-'
+    assert op0gv.opname == 'int_guard_value'
     assert op0gv.args == [op.args[0]]
-    assert op1gv.opname == 'int_guard_value'
+    assert op0gv.result is None
+    assert op1gv.opname == '-live-'
     assert op1gv.args == [op.args[0]]
-    assert op1gv.result is None
     #
-    assert op0.opname == '-live-'
-    assert op0.args == []
     reskind = getkind(restype)[0]
-    assert op1.opname == 'residual_call_%s_%s' % (expectedkind, reskind)
-    assert op1.result == op.result
-    assert op1.args[0] == op.args[0]
-    assert op1.args[1] == 'calldescr'
-    assert isinstance(op1.args[2], IndirectCallTargets)
-    assert op1.args[2].lst == ['somejitcode1', 'somejitcode2']
-    assert len(op1.args) == 3 + len(expectedkind)
-    for sublist, kind1 in zip(op1.args[3:], expectedkind):
+    assert op0.opname == 'residual_call_%s_%s' % (expectedkind, reskind)
+    assert op0.result == op.result
+    assert op0.args[0] == op.args[0]
+    assert op0.args[1] == 'calldescr'
+    assert isinstance(op0.args[2], IndirectCallTargets)
+    assert op0.args[2].lst == ['somejitcode1', 'somejitcode2']
+    assert len(op0.args) == 3 + len(expectedkind)
+    for sublist, kind1 in zip(op0.args[3:], expectedkind):
         assert sublist.kind.startswith(kind1)
         assert list(sublist) == [v for v in op.args[1:]
                                  if getkind(v.concretetype)==sublist.kind]
     for v in op.args[1:]:
         kind = getkind(v.concretetype)
         assert kind == 'void' or kind[0] in expectedkind
+    assert op1.opname == '-live-'
+    assert op1.args == []
 
 def test_getfield():
     # XXX a more compact encoding would be possible, something along
@@ -364,11 +364,11 @@
     op = SpaceOperation('getfield', [v_parent, c_name], v_result)
     oplist = Transformer(FakeCPU()).rewrite_operation(op)
     op0, op1 = oplist
-    assert op0.opname == '-live-'
+    assert op0.opname == 'guard_class'
     assert op0.args == [v_parent]
-    assert op1.opname == 'guard_class'
+    assert op0.result == v_result
+    assert op1.opname == '-live-'
     assert op1.args == [v_parent]
-    assert op1.result == v_result
 
 def test_setfield():
     # XXX a more compact encoding would be possible; see test_getfield()
@@ -436,11 +436,11 @@
     tr = Transformer(FakeCPU(), FakeResidualCallControl())
     oplist = tr.rewrite_operation(op)
     op0, op1 = oplist
-    assert op0.opname == '-live-'
-    assert op0.args == []
-    assert op1.opname == 'residual_call_r_r'
-    assert op1.args[0].value == 'alloc_with_del'    # pseudo-function as a str
-    assert list(op1.args[2]) == []
+    assert op0.opname == 'residual_call_r_r'
+    assert op0.args[0].value == 'alloc_with_del'    # pseudo-function as a str
+    assert list(op0.args[2]) == []
+    assert op1.opname == '-live-'
+    assert op1.args == []
 
 def test_rename_on_links():
     v1 = Variable()
@@ -615,11 +615,11 @@
                         v2)
     oplist = Transformer().rewrite_operation(op)
     op0, op1, op2 = oplist
-    assert op0.opname == '-live-'
+    assert op0.opname == 'int_guard_value'
     assert op0.args == [v1]
-    assert op1.opname == 'int_guard_value'
+    assert op0.result is None
+    assert op1.opname == '-live-'
     assert op1.args == [v1]
-    assert op1.result is None
     assert op2 is None
 
 def test_promote_2():
@@ -635,9 +635,9 @@
     block.closeblock(Link([v2], returnblock))
     Transformer().optimize_block(block)
     assert len(block.operations) == 2
-    assert block.operations[0].opname == '-live-'
+    assert block.operations[0].opname == 'int_guard_value'
     assert block.operations[0].args == [v1]
-    assert block.operations[1].opname == 'int_guard_value'
+    assert block.operations[0].result is None
+    assert block.operations[1].opname == '-live-'
     assert block.operations[1].args == [v1]
-    assert block.operations[1].result is None
     assert block.exits[0].args == [v1]



More information about the Pypy-commit mailing list