[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