[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