[pypy-svn] r79288 - in pypy/trunk/pypy/jit/codewriter: . test

fijal at codespeak.net fijal at codespeak.net
Fri Nov 19 21:17:40 CET 2010


Author: fijal
Date: Fri Nov 19 21:17:28 2010
New Revision: 79288

Modified:
   pypy/trunk/pypy/jit/codewriter/jtransform.py
   pypy/trunk/pypy/jit/codewriter/test/test_jtransform.py
Log:
Fix codewriter


Modified: pypy/trunk/pypy/jit/codewriter/jtransform.py
==============================================================================
--- pypy/trunk/pypy/jit/codewriter/jtransform.py	(original)
+++ pypy/trunk/pypy/jit/codewriter/jtransform.py	Fri Nov 19 21:17:28 2010
@@ -87,17 +87,19 @@
 
     def _do_renaming(self, rename, op):
         op = SpaceOperation(op.opname, op.args[:], op.result)
+        args = list(op.args)
         for i, v in enumerate(op.args):
             if isinstance(v, Variable):
                 if v in rename:
-                    op.args[i] = rename[v]
+                    args[i] = rename[v]
             elif isinstance(v, ListOfKind):
                 newlst = []
                 for x in v:
                     if x in rename:
                         x = rename[x]
                     newlst.append(x)
-                op.args[i] = ListOfKind(v.kind, newlst)
+                args[i] = ListOfKind(v.kind, newlst)
+        op.args = tuple(args)
         return op
 
     def _do_renaming_on_link(self, rename, link):
@@ -203,7 +205,7 @@
                            'float_ge': 'float_le',
                            }.get(op.opname, op.opname)
             return SpaceOperation(reversename,
-                                  [op.args[1], op.args[0]] + op.args[2:],
+                                  (op.args[1], op.args[0],) + op.args[2:],
                                   op.result)
         else:
             return op
@@ -377,7 +379,7 @@
         c_func, TP = support.builtin_func_for_spec(self.cpu.rtyper,
                                                    oopspec_name, argtypes,
                                                    resulttype, extra, extrakey)
-        return SpaceOperation('direct_call', [c_func] + args, op.result)
+        return SpaceOperation('direct_call', (c_func,) + args, op.result)
 
     def _do_builtin_call(self, op, oopspec_name=None, args=None,
                          extra=None, extrakey=None):
@@ -419,25 +421,25 @@
         if op.args[1].value['flavor'] == 'raw':
             ARRAY = op.args[0].value
             return self._do_builtin_call(op, 'raw_malloc',
-                                         [op.args[2]],
+                                         (op.args[2],),
                                          extra = (ARRAY,),
                                          extrakey = ARRAY)
         if op.args[0].value == rstr.STR:
-            return SpaceOperation('newstr', [op.args[2]], op.result)
+            return SpaceOperation('newstr', (op.args[2],), op.result)
         elif op.args[0].value == rstr.UNICODE:
-            return SpaceOperation('newunicode', [op.args[2]], op.result)
+            return SpaceOperation('newunicode', (op.args[2],), op.result)
         else:
             # XXX only strings or simple arrays for now
             ARRAY = op.args[0].value
             arraydescr = self.cpu.arraydescrof(ARRAY)
-            return SpaceOperation('new_array', [arraydescr, op.args[2]],
+            return SpaceOperation('new_array', (arraydescr, op.args[2]),
                                   op.result)
 
     def rewrite_op_free(self, op):
         flags = op.args[1].value
         assert flags['flavor'] == 'raw'
         ARRAY = op.args[0].concretetype.TO
-        return self._do_builtin_call(op, 'raw_free', [op.args[0]],
+        return self._do_builtin_call(op, 'raw_free', (op.args[0],),
                                      extra = (ARRAY,), extrakey = ARRAY)
 
     def rewrite_op_getarrayitem(self, op):
@@ -626,7 +628,7 @@
                 if hasattr(rtti._obj, 'destructor_funcptr'):
                     RESULT = lltype.Ptr(STRUCT)
                     assert RESULT == op.result.concretetype
-                    return self._do_builtin_call(op, 'alloc_with_del', [],
+                    return self._do_builtin_call(op, 'alloc_with_del', (),
                                                  extra = (RESULT, vtable),
                                                  extrakey = STRUCT)
             heaptracker.register_known_gctype(self.cpu, vtable, STRUCT)

Modified: pypy/trunk/pypy/jit/codewriter/test/test_jtransform.py
==============================================================================
--- pypy/trunk/pypy/jit/codewriter/test/test_jtransform.py	(original)
+++ pypy/trunk/pypy/jit/codewriter/test/test_jtransform.py	Fri Nov 19 21:17:28 2010
@@ -220,11 +220,11 @@
                 if isinstance(name2, str):
                     name2 = name2, name2
                 if isinstance(v1, Constant) and isinstance(v2, Variable):
-                    assert op1.args == [v2, v1]
+                    assert op1.args == (v2, v1)
                     assert op1.result == v3
                     assert op1.opname == name2[1]
                 else:
-                    assert op1.args == [v1, v2]
+                    assert op1.args == (v1, v2)
                     assert op1.result == v3
                     assert op1.opname == name2[0]
 
@@ -237,13 +237,13 @@
             op0, op1 = oplist
             assert op0.opname == 'int_add_ovf'
             if isinstance(v1, Constant) and isinstance(v2, Variable):
-                assert op0.args == [v2, v1]
+                assert op0.args == (v2, v1)
                 assert op0.result == v3
             else:
-                assert op0.args == [v1, v2]
+                assert op0.args == (v1, v2)
                 assert op0.result == v3
             assert op1.opname == '-live-'
-            assert op1.args == []
+            assert op1.args == ()
             assert op1.result is None
 
 def test_calls():
@@ -296,7 +296,7 @@
         kind = getkind(v.concretetype)
         assert kind == 'void' or kind[0] in expectedkind
     assert op1.opname == '-live-'
-    assert op1.args == []
+    assert op1.args == ()
 
 def direct_call_test(argtypes, restype, expectedkind):
     op = get_direct_call_op(argtypes, restype)
@@ -317,15 +317,16 @@
         kind = getkind(v.concretetype)
         assert kind == 'void' or kind[0] in expectedkind
     assert op1.opname == '-live-'
-    assert op1.args == []
+    assert op1.args == ()
 
 def indirect_residual_call_test(argtypes, restype, expectedkind):
     # an indirect call that is residual in all cases is very similar to
     # a residual direct call
     op = get_direct_call_op(argtypes, restype)
-    op.opname = 'indirect_call'
-    op.args[0] = varoftype(op.args[0].concretetype)
-    op.args.append(Constant(['somegraph1', 'somegraph2'], lltype.Void))
+    op = SpaceOperation('indirect_call', (varoftype(op.args[0].concretetype),)
+                        + op.args[1:] + (Constant(['somegraph1', 'somegraph2'],
+                                                  lltype.Void),),
+                        op.result)
     tr = Transformer(FakeCPU(), FakeResidualIndirectCallControl())
     tr.graph = 'someinitialgraph'
     oplist = tr.rewrite_operation(op)
@@ -344,24 +345,25 @@
         kind = getkind(v.concretetype)
         assert kind == 'void' or kind[0] in expectedkind
     assert op1.opname == '-live-'
-    assert op1.args == []
+    assert op1.args == ()
 
 def indirect_regular_call_test(argtypes, restype, expectedkind):
     # a regular indirect call is preceded by a guard_value on the
     # function address, so that pyjitpl can know which jitcode to follow
     from pypy.jit.codewriter.flatten import IndirectCallTargets
     op = get_direct_call_op(argtypes, restype)
-    op.opname = 'indirect_call'
-    op.args[0] = varoftype(op.args[0].concretetype)
-    op.args.append(Constant(['somegraph1', 'somegraph2'], lltype.Void))
+    op = SpaceOperation('indirect_call', (varoftype(op.args[0].concretetype),)
+                        + op.args[1:] + (Constant(['somegraph1', 'somegraph2'],
+                                                  lltype.Void),),
+                        op.result)
     tr = Transformer(FakeCPU(), FakeRegularIndirectCallControl())
     tr.graph = 'someinitialgraph'
     oplist = tr.rewrite_operation(op)
     op0gv, op1gv, op0, op1 = oplist
     assert op0gv.opname == '-live-'
-    assert op0gv.args == []
+    assert op0gv.args == ()
     assert op1gv.opname == 'int_guard_value'
-    assert op1gv.args == [op.args[0]]
+    assert op1gv.args == (op.args[0],)
     assert op1gv.result is None
     #
     reskind = getkind(restype)[0]
@@ -383,7 +385,7 @@
     # False, because this 'residual_call' will likely call further jitcodes
     # which can do e.g. guard_class or other stuff requiring anyway a -live-.
     assert op1.opname == '-live-'
-    assert op1.args == []
+    assert op1.args == ()
 
 def test_getfield():
     # XXX a more compact encoding would be possible, something along
@@ -412,7 +414,7 @@
         op1 = Transformer(FakeCPU()).rewrite_operation(op)
         assert op1.opname == 'getfield_gc_' + suffix
         fielddescr = ('fielddescr', S, name)
-        assert op1.args == [v_parent, fielddescr]
+        assert op1.args == (v_parent, fielddescr)
         assert op1.result == v_result
 
 def test_getfield_typeptr():
@@ -423,9 +425,9 @@
     oplist = Transformer(FakeCPU()).rewrite_operation(op)
     op0, op1 = oplist
     assert op0.opname == '-live-'
-    assert op0.args == []
+    assert op0.args == ()
     assert op1.opname == 'guard_class'
-    assert op1.args == [v_parent]
+    assert op1.args == (v_parent,)
     assert op1.result == v_result
 
 def test_setfield():
@@ -454,7 +456,7 @@
         op1 = Transformer(FakeCPU()).rewrite_operation(op)
         assert op1.opname == 'setfield_gc_' + suffix
         fielddescr = ('fielddescr', S, name)
-        assert op1.args == [v_parent, fielddescr, v_newvalue]
+        assert op1.args == (v_parent, fielddescr, v_newvalue)
         assert op1.result is None
 
 def test_malloc_new():
@@ -464,7 +466,7 @@
                                    Constant({'flavor': 'gc'}, lltype.Void)], v)
     op1 = Transformer(FakeCPU()).rewrite_operation(op)
     assert op1.opname == 'new'
-    assert op1.args == [('sizedescr', S)]
+    assert op1.args == (('sizedescr', S),)
 
 def test_malloc_new_with_vtable():
     vtable = lltype.malloc(rclass.OBJECT_VTABLE, immortal=True)
@@ -476,7 +478,7 @@
     cpu = FakeCPU()
     op1 = Transformer(cpu).rewrite_operation(op)
     assert op1.opname == 'new_with_vtable'
-    assert op1.args == [('sizedescr', S)]
+    assert op1.args == (('sizedescr', S),)
     #assert heaptracker.descr2vtable(cpu, op1.args[0]) == vtable [type check]
     vtable_int = heaptracker.adr2int(llmemory.cast_ptr_to_adr(vtable))
     assert heaptracker.vtable2descr(cpu, vtable_int) == op1.args[0]
@@ -498,7 +500,7 @@
     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 == []
+    assert op1.args == ()
 
 def test_rename_on_links():
     v1 = Variable()
@@ -525,17 +527,17 @@
         op = SpaceOperation(opname, [v1, v2], v3)
         op1 = Transformer().rewrite_operation(op)
         assert op1.opname == opname
-        assert op1.args == [v1, v2]
+        assert op1.args == (v1, v2)
         #
         op = SpaceOperation(opname, [v1, c0], v3)
         op1 = Transformer().rewrite_operation(op)
         assert op1.opname == reducedname
-        assert op1.args == [v1]
+        assert op1.args == (v1,)
         #
         op = SpaceOperation(opname, [c0, v2], v3)
         op1 = Transformer().rewrite_operation(op)
         assert op1.opname == reducedname
-        assert op1.args == [v2]
+        assert op1.args == (v2,)
 
 def test_ptr_eq():
     v1 = varoftype(rclass.OBJECTPTR)
@@ -548,17 +550,17 @@
         op = SpaceOperation(opname, [v1, v2], v3)
         op1 = Transformer().rewrite_operation(op)
         assert op1.opname == opname
-        assert op1.args == [v1, v2]
+        assert op1.args == (v1, v2)
         #
         op = SpaceOperation(opname, [v1, c0], v3)
         op1 = Transformer().rewrite_operation(op)
         assert op1.opname == reducedname
-        assert op1.args == [v1]
+        assert op1.args == (v1,)
         #
         op = SpaceOperation(opname, [c0, v2], v3)
         op1 = Transformer().rewrite_operation(op)
         assert op1.opname == reducedname
-        assert op1.args == [v2]
+        assert op1.args == (v2,)
 
 def test_nongc_ptr_eq():
     v1 = varoftype(rclass.NONGCOBJECTPTR)
@@ -571,27 +573,27 @@
         op = SpaceOperation(opname, [v1, v2], v3)
         op1 = Transformer().rewrite_operation(op)
         assert op1.opname == opname.replace('ptr_', 'int_')
-        assert op1.args == [v1, v2]
+        assert op1.args == (v1, v2)
         #
         op = SpaceOperation(opname, [v1, c0], v3)
         op1 = Transformer().rewrite_operation(op)
         assert op1.opname == reducedname
-        assert op1.args == [v1]
+        assert op1.args == (v1,)
         #
         op = SpaceOperation(opname, [c0, v2], v3)
         op1 = Transformer().rewrite_operation(op)
         assert op1.opname == reducedname
-        assert op1.args == [v2]
+        assert op1.args == (v2,)
     #
     op = SpaceOperation('ptr_iszero', [v1], v3)
     op1 = Transformer().rewrite_operation(op)
     assert op1.opname == 'int_is_zero'
-    assert op1.args == [v1]
+    assert op1.args == (v1,)
     #
     op = SpaceOperation('ptr_nonzero', [v1], v3)
     op1 = Transformer().rewrite_operation(op)
     assert op1.opname == 'int_is_true'
-    assert op1.args == [v1]
+    assert op1.args == (v1,)
 
 def test_str_getinteriorarraysize():
     v = varoftype(lltype.Ptr(rstr.STR))
@@ -601,7 +603,7 @@
                         v_result)
     op1 = Transformer().rewrite_operation(op)
     assert op1.opname == 'strlen'
-    assert op1.args == [v]
+    assert op1.args == (v,)
     assert op1.result == v_result
 
 def test_unicode_getinteriorarraysize():
@@ -612,7 +614,7 @@
                         v_result)
     op1 = Transformer().rewrite_operation(op)
     assert op1.opname == 'unicodelen'
-    assert op1.args == [v]
+    assert op1.args == (v,)
     assert op1.result == v_result
 
 def test_str_getinteriorfield():
@@ -624,7 +626,7 @@
                         v_result)
     op1 = Transformer().rewrite_operation(op)
     assert op1.opname == 'strgetitem'
-    assert op1.args == [v, v_index]
+    assert op1.args == (v, v_index,)
     assert op1.result == v_result
 
 def test_unicode_getinteriorfield():
@@ -636,7 +638,7 @@
                         v_result)
     op1 = Transformer().rewrite_operation(op)
     assert op1.opname == 'unicodegetitem'
-    assert op1.args == [v, v_index]
+    assert op1.args == (v, v_index,)
     assert op1.result == v_result
 
 def test_str_setinteriorfield():
@@ -649,7 +651,7 @@
                         v_void)
     op1 = Transformer().rewrite_operation(op)
     assert op1.opname == 'strsetitem'
-    assert op1.args == [v, v_index, v_newchr]
+    assert op1.args == (v, v_index, v_newchr,)
     assert op1.result == v_void
 
 def test_unicode_setinteriorfield():
@@ -662,7 +664,7 @@
                         v_void)
     op1 = Transformer().rewrite_operation(op)
     assert op1.opname == 'unicodesetitem'
-    assert op1.args == [v, v_index, v_newchr]
+    assert op1.args == (v, v_index, v_newchr,)
     assert op1.result == v_void
 
 def test_promote_1():
@@ -674,9 +676,9 @@
     oplist = Transformer().rewrite_operation(op)
     op0, op1, op2 = oplist
     assert op0.opname == '-live-'
-    assert op0.args == []
+    assert op0.args == ()
     assert op1.opname == 'int_guard_value'
-    assert op1.args == [v1]
+    assert op1.args == (v1,)
     assert op1.result is None
     assert op2 is None
 
@@ -694,9 +696,9 @@
     Transformer().optimize_block(block)
     assert len(block.operations) == 2
     assert block.operations[0].opname == '-live-'
-    assert block.operations[0].args == []
+    assert block.operations[0].args == ()
     assert block.operations[1].opname == 'int_guard_value'
-    assert block.operations[1].args == [v1]
+    assert block.operations[1].args == (v1,)
     assert block.operations[1].result is None
     assert block.exits[0].args == [v1]
 
@@ -725,10 +727,10 @@
     assert len(oplist) == 6
     assert oplist[0].opname == '-live-'
     assert oplist[1].opname == 'int_guard_value'
-    assert oplist[1].args   == [v1]
+    assert oplist[1].args   == (v1,)
     assert oplist[2].opname == '-live-'
     assert oplist[3].opname == 'int_guard_value'
-    assert oplist[3].args   == [v2]
+    assert oplist[3].args   == (v2,)
     assert oplist[4].opname == 'jit_merge_point'
     assert oplist[4].args[0].value == 42
     assert list(oplist[4].args[1]) == [v1, v2]
@@ -742,7 +744,7 @@
     op = SpaceOperation('getfield', [v1, Constant('x', lltype.Void)], v2)
     op1 = Transformer(FakeCPU()).rewrite_operation(op)
     assert op1.opname == 'getfield_gc_i'
-    assert op1.args == [v1, ('fielddescr', S, 'x')]
+    assert op1.args == (v1, ('fielddescr', S, 'x'),)
     assert op1.result == v2
 
 def test_getfield_gc_pure():
@@ -753,7 +755,7 @@
     op = SpaceOperation('getfield', [v1, Constant('x', lltype.Void)], v2)
     op1 = Transformer(FakeCPU()).rewrite_operation(op)
     assert op1.opname == 'getfield_gc_i_pure'
-    assert op1.args == [v1, ('fielddescr', S, 'x')]
+    assert op1.args == (v1, ('fielddescr', S, 'x'),)
     assert op1.result == v2
 
 def test_getfield_gc_greenfield():
@@ -771,7 +773,7 @@
     op = SpaceOperation('getfield', [v1, Constant('x', lltype.Void)], v2)
     op1 = Transformer(FakeCPU(), FakeCC()).rewrite_operation(op)
     assert op1.opname == 'getfield_gc_i_greenfield'
-    assert op1.args == [v1, ('fielddescr', S, 'x')]
+    assert op1.args == (v1, ('fielddescr', S, 'x'),)
     assert op1.result == v2
 
 def test_int_abs():
@@ -792,7 +794,7 @@
     op = SpaceOperation('malloc_varsize', [c_STR, c_flavor, v1], v2)
     op1 = Transformer().rewrite_operation(op)
     assert op1.opname == 'newstr'
-    assert op1.args == [v1]
+    assert op1.args == (v1,)
     assert op1.result == v2
 
 def test_str_concat():



More information about the Pypy-commit mailing list