Author: Maciej Fijalkowski <[email protected]>
Branch: inline-dict-ops
Changeset: r45111:9827c0b68ce9
Date: 2011-06-24 19:26 +0200
http://bitbucket.org/pypy/pypy/changeset/9827c0b68ce9/
Log: Add kind to {get,set}interiorfield ops
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
@@ -714,7 +714,8 @@
arraydescr = self.cpu.arraydescrof(v_inst.concretetype.TO)
fielddescr = self.cpu.fielddescrof(STRUCT, c_field.value)
args = [v_inst, v_index, arraydescr, fielddescr]
- return SpaceOperation('getinteriorfield', args, op.result)
+ kind = getkind(op.result.concretetype)[0]
+ return SpaceOperation('getinteriorfield_%s' % kind, args,
op.result)
def rewrite_op_setinteriorfield(self, op):
# only supports strings and unicodes
@@ -736,8 +737,9 @@
assert isinstance(STRUCT, lltype.Struct)
arraydescr = self.cpu.arraydescrof(v_inst.concretetype.TO)
fielddescr = self.cpu.fielddescrof(STRUCT, c_field.value)
+ kind = getkind(v_value.concretetype)[0]
args = [v_inst, v_index, v_value, arraydescr, fielddescr]
- return SpaceOperation('setinteriorfield', args, op.result)
+ return SpaceOperation('setinteriorfield_%s' % kind, args,
op.result)
def _rewrite_equality(self, op, opname):
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
@@ -656,7 +656,7 @@
op = SpaceOperation('getinteriorfield', [v, i, Constant('v', lltype.Void)],
v_result)
op1 = Transformer(FakeCPU()).rewrite_operation(op)
- assert op1.opname == 'getinteriorfield'
+ assert op1.opname == 'getinteriorfield_i'
assert op1.args == [v, i, ('arraydescr', DICT),
('fielddescr', DICT.OF, 'v')]
@@ -696,7 +696,7 @@
i],
v_void)
op1 = Transformer(FakeCPU()).rewrite_operation(op)
- assert op1.opname == 'setinteriorfield'
+ assert op1.opname == 'setinteriorfield_i'
assert op1.args == [v, i, i, ('arraydescr', DICT),
('fielddescr', DICT.OF, 'v')]
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit