[pypy-svn] r78681 - in pypy/branch/jit-unroll-loops/pypy/jit/metainterp: optimizeopt test

hakanardo at codespeak.net hakanardo at codespeak.net
Wed Nov 3 21:48:46 CET 2010


Author: hakanardo
Date: Wed Nov  3 21:48:43 2010
New Revision: 78681

Modified:
   pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/optimizer.py
   pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_optimizeopt.py
Log:
This test should fail on trunk aswell. Problem is that getvalue() uses getinterned(), while calling make_constat() on a value already in cached_fields does not.

Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/optimizer.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/optimizer.py	(original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/optimizer.py	Wed Nov  3 21:48:43 2010
@@ -320,7 +320,6 @@
         self.i = 0
         while self.i < len(self.loop.operations):
             op = self.loop.operations[self.i]
-            #print "OP: %s" % op
             self.first_optimization.propagate_forward(op)
             self.i += 1
         self.loop.operations = self.newoperations

Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_optimizeopt.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_optimizeopt.py	(original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_optimizeopt.py	Wed Nov  3 21:48:43 2010
@@ -3553,6 +3553,41 @@
         """
         self.optimize_loop(ops, expected, expected)
 
+    def test_getfield_guard_const_preamble(self):
+        ops = """
+        [p0]
+        p01 = getfield_gc(p0, descr=nextdescr)
+        p02 = getfield_gc(p01, descr=valuedescr)
+        guard_value(p01, ConstPtr(myptr)) []
+        p11 = getfield_gc(p0, descr=nextdescr)
+        p12 = getfield_gc(p11, descr=valuedescr)
+        guard_value(p11, ConstPtr(myptr)) []
+        p64 = call_may_force(p02, p12, descr=plaincalldescr)
+
+        p21 = getfield_gc(p0, descr=nextdescr)
+        p22 = getfield_gc(p21, descr=valuedescr)
+        guard_value(p21, ConstPtr(myptr)) []
+        p31 = getfield_gc(p0, descr=nextdescr)
+        p32 = getfield_gc(p31, descr=valuedescr)
+        guard_value(p31, ConstPtr(myptr)) []
+        p65 = call_may_force(p22, p32, descr=plaincalldescr)
+        jump(p0)
+        """
+        expected = """
+        [p0]
+        p01 = getfield_gc(p0, descr=nextdescr)
+        p02 = getfield_gc(p01, descr=valuedescr)
+        guard_value(p01, ConstPtr(myptr)) []
+        p64 = call_may_force(p02, p02, descr=plaincalldescr)
+
+        p21 = getfield_gc(p0, descr=nextdescr)
+        p22 = getfield_gc(p21, descr=valuedescr)
+        guard_value(p21, ConstPtr(myptr)) []
+        p65 = call_may_force(p22, p22, descr=plaincalldescr)
+        jump(p0)
+        """
+        self.optimize_loop(ops, expected, expected)
+        
     def test_addsub_ovf(self):
         ops = """
         [i0]



More information about the Pypy-commit mailing list