[pypy-svn] r79736 - in pypy/branch/out-of-line-guards/pypy/jit: codewriter codewriter/test metainterp/test
fijal at codespeak.net
fijal at codespeak.net
Thu Dec 2 10:53:12 CET 2010
Author: fijal
Date: Thu Dec 2 10:53:10 2010
New Revision: 79736
Modified:
pypy/branch/out-of-line-guards/pypy/jit/codewriter/jtransform.py
pypy/branch/out-of-line-guards/pypy/jit/codewriter/test/test_jtransform.py
pypy/branch/out-of-line-guards/pypy/jit/metainterp/test/test_basic.py
Log:
test and a fix
Modified: pypy/branch/out-of-line-guards/pypy/jit/codewriter/jtransform.py
==============================================================================
--- pypy/branch/out-of-line-guards/pypy/jit/codewriter/jtransform.py (original)
+++ pypy/branch/out-of-line-guards/pypy/jit/codewriter/jtransform.py Thu Dec 2 10:53:10 2010
@@ -539,7 +539,7 @@
self.immutable_arrays[op.result] = True
else:
jit_inv = v_inst.concretetype.TO._hints.get('jit_invariant_fields')
- if jit_inv and op.args[1].value[len('inst_'):] in jit_inv.fields:
+ if jit_inv and op.args[1].value in jit_inv.fields:
pure = '_pure'
else:
pure = ''
@@ -567,7 +567,7 @@
SpaceOperation('setfield_vable_%s' % kind,
[v_inst, descr, v_value], None)]
jit_inv = v_inst.concretetype.TO._hints.get('jit_invariant_fields')
- if jit_inv and op.args[1].value[len('inst_'):] in jit_inv.fields:
+ if jit_inv and op.args[1].value in jit_inv.fields:
raise JitInvariantError("setfield on jit invariant should not"
" be ssen by jit")
argname = getattr(v_inst.concretetype.TO, '_gckind', 'gc')
Modified: pypy/branch/out-of-line-guards/pypy/jit/codewriter/test/test_jtransform.py
==============================================================================
--- pypy/branch/out-of-line-guards/pypy/jit/codewriter/test/test_jtransform.py (original)
+++ pypy/branch/out-of-line-guards/pypy/jit/codewriter/test/test_jtransform.py Thu Dec 2 10:53:10 2010
@@ -947,7 +947,7 @@
from pypy.rpython.rclass import FieldListAccessor
from pypy.rpython.lltypesystem.rclass import ASMCODE
accessor = FieldListAccessor()
- accessor.initialize(None, {'x': 'asmcodes_x'})
+ accessor.initialize(None, {'inst_x': 'asmcodes_x'})
v2 = varoftype(lltype.Signed)
STRUCT = lltype.GcStruct('struct', ('inst_x', lltype.Signed),
('asmcodes_x', lltype.Ptr(ASMCODE)),
@@ -962,7 +962,7 @@
from pypy.rpython.rclass import FieldListAccessor
from pypy.rpython.lltypesystem.rclass import ASMCODE
accessor = FieldListAccessor()
- accessor.initialize(None, {'x': 'asmcodes_x'})
+ accessor.initialize(None, {'inst_x': 'asmcodes_x'})
v1 = varoftype(lltype.Signed)
STRUCT = lltype.GcStruct('struct', ('inst_x', lltype.Signed),
('asmcodes_x', lltype.Ptr(ASMCODE)),
Modified: pypy/branch/out-of-line-guards/pypy/jit/metainterp/test/test_basic.py
==============================================================================
--- pypy/branch/out-of-line-guards/pypy/jit/metainterp/test/test_basic.py (original)
+++ pypy/branch/out-of-line-guards/pypy/jit/metainterp/test/test_basic.py Thu Dec 2 10:53:10 2010
@@ -718,6 +718,24 @@
assert res == 210
self.check_operations_history(getfield_gc=0)
+ def test_getfield_jit_invariant(self):
+ class A(object):
+ _jit_invariant_fields_ = 'x'
+
+ a1 = A()
+ a1.x = 5
+ a2 = A()
+ a2.x = 8
+
+ def f(x):
+ if x:
+ a = a1
+ else:
+ a = a2
+ return a.x
+ res = self.interp_operations(f, [-3])
+ self.check_operations_history(getfield_gc = 0)
+
def test_setfield_bool(self):
class A:
def __init__(self):
More information about the Pypy-commit
mailing list