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