[pypy-svn] r76376 - in pypy/trunk/pypy/jit/metainterp: . test

agaynor at codespeak.net agaynor at codespeak.net
Tue Jul 27 20:55:13 CEST 2010


Author: agaynor
Date: Tue Jul 27 20:55:11 2010
New Revision: 76376

Modified:
   pypy/trunk/pypy/jit/metainterp/optimizeopt.py
   pypy/trunk/pypy/jit/metainterp/test/test_optimizeopt.py
Log:
In the JIT optimize int_add(x, 0) and int_add(0, x), fijal says this shows up in traces.

Modified: pypy/trunk/pypy/jit/metainterp/optimizeopt.py
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/optimizeopt.py	(original)
+++ pypy/trunk/pypy/jit/metainterp/optimizeopt.py	Tue Jul 27 20:55:11 2010
@@ -1001,6 +1001,17 @@
             self.make_equal_to(op.result, v1)
         else:
             return self.optimize_default(op)
+    
+    def optimize_INT_ADD(self, op):
+        v1 = self.getvalue(op.args[0])
+        v2 = self.getvalue(op.args[1])
+        # If one side of the op is 0 the result is the other side.
+        if v1.is_constant() and v1.box.getint() == 0:
+            self.make_equal_to(op.result, v2)
+        elif v2.is_constant() and v2.box.getint() == 0:
+            self.make_equal_to(op.result, v1)
+        else:
+            self.optimize_default(op)
 
 
 optimize_ops = _findall(Optimizer, 'optimize_')

Modified: pypy/trunk/pypy/jit/metainterp/test/test_optimizeopt.py
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/test/test_optimizeopt.py	(original)
+++ pypy/trunk/pypy/jit/metainterp/test/test_optimizeopt.py	Tue Jul 27 20:55:11 2010
@@ -2063,6 +2063,28 @@
         jump(i0)
         """
         self.optimize_loop(ops, 'Not', expected)
+        
+        ops = """
+        [i0]
+        i1 = int_add(i0, 0)
+        jump(i1)
+        """
+        expected = """
+        [i0]
+        jump(i0)
+        """
+        self.optimize_loop(ops, 'Not', expected)
+        
+        ops = """
+        [i0]
+        i1 = int_add(0, i0)
+        jump(i1)
+        """
+        expected = """
+        [i0]
+        jump(i0)
+        """
+        self.optimize_loop(ops, 'Not', expected)
     
     # ----------
 



More information about the Pypy-commit mailing list