[pypy-svn] r66675 - in pypy/branch/pyjitpl5/pypy/jit/metainterp: . test
arigo at codespeak.net
arigo at codespeak.net
Wed Jul 29 18:45:33 CEST 2009
Author: arigo
Date: Wed Jul 29 18:45:33 2009
New Revision: 66675
Modified:
pypy/branch/pyjitpl5/pypy/jit/metainterp/optimizefindnode.py
pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimizefindnode.py
Log:
Oups, a bug in handling the escaping in SETFIELD_GC.
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/optimizefindnode.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/optimizefindnode.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/optimizefindnode.py Wed Jul 29 18:45:33 2009
@@ -105,9 +105,10 @@
def find_nodes_SETFIELD_GC(self, op):
instnode = self.getnode(op.args[0])
+ fieldnode = self.getnode(op.args[1])
if instnode.escaped:
+ fieldnode.mark_escaped()
return # nothing to be gained from tracking the field
- fieldnode = self.getnode(op.args[1])
field = op.descr
assert isinstance(field, AbstractValue)
if instnode.curfields is None:
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimizefindnode.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimizefindnode.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimizefindnode.py Wed Jul 29 18:45:33 2009
@@ -488,6 +488,16 @@
Virtual(node_vtable, valuedescr=Not),
Virtual(node_vtable, nextdescr=Not)''')
+ def test_find_nodes_setfield_bug(self):
+ ops = """
+ [p1, p2]
+ escape(p1)
+ setfield_gc(p1, p2, descr=nextdescr)
+ p3 = new_with_vtable(ConstClass(node_vtable))
+ jump(p1, p3)
+ """
+ self.find_nodes(ops, 'Not, Not')
+
# ------------------------------
# Bridge tests
More information about the Pypy-commit
mailing list