[pypy-svn] r65473 - in pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp: . test

fijal at codespeak.net fijal at codespeak.net
Thu May 28 02:04:17 CEST 2009


Author: fijal
Date: Thu May 28 02:04:15 2009
New Revision: 65473

Modified:
   pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/optimize2.py
   pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/test/test_optimize2.py
Log:
a next test to fix


Modified: pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/optimize2.py
==============================================================================
--- pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/optimize2.py	(original)
+++ pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/optimize2.py	Thu May 28 02:04:15 2009
@@ -20,6 +20,7 @@
         self.const = const
         self.cls = None
         self.cleanfields = {}
+        self.origfields = {}
         self.arrayfields = {}
         self.virtualized = False
         self.allocated_in_loop = False
@@ -253,7 +254,8 @@
         field = op.descr
         if field not in instnode.vdesc.virtuals:
             return False
-        spec.getnode(op.result).virtualized = True
+        node = spec.getnode(op.result)
+        node.virtualized = True
         return False
 
     @staticmethod
@@ -270,7 +272,7 @@
             instnode.virtualized = True
             instnode.vdesc = op.vdesc
         return False
-    
+
     @staticmethod
     def optimize_guard_nonvirtualized(op, spec):
         return True

Modified: pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/test/test_optimize2.py
==============================================================================
--- pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/test/test_optimize2.py	(original)
+++ pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/test/test_optimize2.py	Thu May 28 02:04:15 2009
@@ -427,9 +427,36 @@
         self.assert_equal(self.optimize(pre_op, [SimpleVirtualOpt()]),
                           expected)
 
+
+    def test_virtual_with_virtualizable_escapes(self):
+        py.test.skip("FIXME")
+        pre_op = """
+        [p0]
+        p1 = new_with_vtable(ConstClass(node_vtable))
+        setfield_gc(p1, 1, descr=nodedescr)
+        guard_nonvirtualized(p0, vdesc=vdesc)
+            fail()
+        p2 = getfield_gc(p0, descr=list_node_desc)
+        setarrayitem_gc(p2, 0, p1)
+        p3 = getarrayitem_gc(p2, 0)
+        fail(p3)
+        """
+        expected = """
+        [p0]
+        p1 = new_with_vtable(ConstClass(node_vtable))
+        setfield_gc(p1, 1, descr=nodedescr)
+        p2 = getfield_gc(p0, descr=list_node_desc)
+        fail(p1)
+        """
+        self.assert_equal(self.optimize(pre_op, [SimpleVirtualizableOpt(),
+                                                 SimpleVirtualOpt()]),
+                          expected)
+
 class TestLLtype(LLtypeMixin, BaseTestOptimize2):
     pass
 
 class TestOOtype(OOtypeMixin, BaseTestOptimize2):
     def test_virtual_with_virtualizable(self):
         py.test.skip("XXX")
+
+    test_virtual_with_virtualizable_escapes = test_virtual_with_virtualizable



More information about the Pypy-commit mailing list