[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