[pypy-svn] r70274 - in pypy/branch/jit-delayed-write/pypy/jit/metainterp: . test

arigo at codespeak.net arigo at codespeak.net
Fri Dec 25 22:09:41 CET 2009


Author: arigo
Date: Fri Dec 25 22:09:39 2009
New Revision: 70274

Modified:
   pypy/branch/jit-delayed-write/pypy/jit/metainterp/optimizeopt.py
   pypy/branch/jit-delayed-write/pypy/jit/metainterp/test/test_optimizeopt.py
Log:
Step 1: force lazy fields on all guards.


Modified: pypy/branch/jit-delayed-write/pypy/jit/metainterp/optimizeopt.py
==============================================================================
--- pypy/branch/jit-delayed-write/pypy/jit/metainterp/optimizeopt.py	(original)
+++ pypy/branch/jit-delayed-write/pypy/jit/metainterp/optimizeopt.py	Fri Dec 25 22:09:39 2009
@@ -918,6 +918,7 @@
         if op.is_ovf():
             return
         if op.is_guard():
+            self.force_all_lazy_setfields()
             return
         opnum = op.opnum
         if (opnum == rop.SETFIELD_GC or

Modified: pypy/branch/jit-delayed-write/pypy/jit/metainterp/test/test_optimizeopt.py
==============================================================================
--- pypy/branch/jit-delayed-write/pypy/jit/metainterp/test/test_optimizeopt.py	(original)
+++ pypy/branch/jit-delayed-write/pypy/jit/metainterp/test/test_optimizeopt.py	Fri Dec 25 22:09:39 2009
@@ -1376,6 +1376,17 @@
         """
         self.optimize_loop(ops, 'Not, Not, Not', ops)
 
+    def test_duplicate_setfield_residual_guard(self):
+        ops = """
+        [p1, i1, i2, i3]
+        setfield_gc(p1, i1, descr=valuedescr)
+        guard_true(i3) []
+        i4 = int_neg(i2)
+        setfield_gc(p1, i2, descr=valuedescr)
+        jump(p1, i1, i2, i4)
+        """
+        self.optimize_loop(ops, 'Not, Not, Not, Not', ops)
+
     def test_duplicate_setfield_aliasing(self):
         # a case where aliasing issues (and not enough cleverness) mean
         # that we fail to remove any setfield_gc



More information about the Pypy-commit mailing list