Author: Maciej Fijalkowski <[email protected]>
Branch: inline-dict-ops
Changeset: r45909:725eba4ec8b0
Date: 2011-07-23 20:20 +0200
http://bitbucket.org/pypy/pypy/changeset/725eba4ec8b0/

Log:    tests and fixes for void args

diff --git a/pypy/jit/codewriter/jtransform.py 
b/pypy/jit/codewriter/jtransform.py
--- a/pypy/jit/codewriter/jtransform.py
+++ b/pypy/jit/codewriter/jtransform.py
@@ -695,7 +695,6 @@
         return SpaceOperation(opname, [op.args[0]], op.result)
 
     def rewrite_op_getinteriorfield(self, op):
-        # only supports strings and unicodes
         assert len(op.args) == 3
         if isinstance(op.args[1], Constant) and op.args[1].value == 'chars':
             optype = op.args[0].concretetype
@@ -707,6 +706,8 @@
             return SpaceOperation(opname, [op.args[0], op.args[2]], op.result)
         else:
             v_inst, v_index, c_field = op.args
+            if op.result.concretetype is lltype.Void:
+                return
             # only GcArray of Struct supported
             assert isinstance(v_inst.concretetype.TO, lltype.GcArray)
             STRUCT = v_inst.concretetype.TO.OF
@@ -719,7 +720,6 @@
                                   op.result)
 
     def rewrite_op_setinteriorfield(self, op):
-        # only supports strings and unicodes
         assert len(op.args) == 4
         if isinstance(op.args[1], Constant) and op.args[1].value == 'chars':
             optype = op.args[0].concretetype
@@ -732,6 +732,8 @@
                                   op.result)
         else:
             v_inst, v_index, c_field, v_value = op.args
+            if v_value.concretetype is lltype.Void:
+                return
             # only GcArray of Struct supported
             assert isinstance(v_inst.concretetype.TO, lltype.GcArray)
             STRUCT = v_inst.concretetype.TO.OF
diff --git a/pypy/jit/codewriter/test/test_jtransform.py 
b/pypy/jit/codewriter/test/test_jtransform.py
--- a/pypy/jit/codewriter/test/test_jtransform.py
+++ b/pypy/jit/codewriter/test/test_jtransform.py
@@ -658,6 +658,10 @@
     op1 = Transformer(FakeCPU()).rewrite_operation(op)
     assert op1.opname == 'getinteriorfield_gc_i'
     assert op1.args == [v, i, ('interiorfielddescr', DICT, 'v')]
+    op = SpaceOperation('getinteriorfield', [v, i, Constant('v', lltype.Void)],
+                        Constant(None, lltype.Void))
+    op1 = Transformer(FakeCPU()).rewrite_operation(op)
+    assert not op1
 
 def test_str_setinteriorfield():
     v = varoftype(lltype.Ptr(rstr.STR))
@@ -697,6 +701,10 @@
     op1 = Transformer(FakeCPU()).rewrite_operation(op)
     assert op1.opname == 'setinteriorfield_gc_i'
     assert op1.args == [v, i, i, ('interiorfielddescr', DICT, 'v')]
+    op = SpaceOperation('setinteriorfield', [v, i, Constant('v', lltype.Void),
+                                             v_void], v_void)
+    op1 = Transformer(FakeCPU()).rewrite_operation(op)
+    assert not op1
 
 def test_promote_1():
     v1 = varoftype(lltype.Signed)
diff --git a/pypy/jit/metainterp/test/test_dict.py 
b/pypy/jit/metainterp/test/test_dict.py
--- a/pypy/jit/metainterp/test/test_dict.py
+++ b/pypy/jit/metainterp/test/test_dict.py
@@ -6,7 +6,6 @@
 class DictTests:
 
     def test_dict_set_none(self):
-        py.test.skip("annoying")
         def fn(n):
             d = {}
             d[0] = None
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to