Author: Maciej Fijalkowski <fij...@gmail.com>
Branch: conditional_call_value
Changeset: r77159:c9ff8a58c585
Date: 2015-05-06 16:55 +0200
http://bitbucket.org/pypy/pypy/changeset/c9ff8a58c585/

Log:    fix the test

diff --git a/rpython/jit/metainterp/optimizeopt/rewrite.py 
b/rpython/jit/metainterp/optimizeopt/rewrite.py
--- a/rpython/jit/metainterp/optimizeopt/rewrite.py
+++ b/rpython/jit/metainterp/optimizeopt/rewrite.py
@@ -417,6 +417,17 @@
             op = op.copy_and_change(rop.CALL, args=op.getarglist()[1:])
         self.emit_operation(op)
 
+    def optimize_COND_CALL_VALUE(self, op):
+        arg = op.getarg(0)
+        val = self.getvalue(arg)
+        if val.is_constant():
+            if val.box.same_constant(CONST_0):
+                self.last_emitted_operation = REMOVED
+                self.make_equal_to(op.result, self.getvalue(op.getarg(1)))
+                return
+            op = op.copy_and_change(rop.CALL, args=op.getarglist()[2:])
+        self.emit_operation(op)
+
     def _optimize_nullness(self, op, box, expect_nonnull):
         value = self.getvalue(box)
         if value.is_nonnull():
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py 
b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
@@ -8536,26 +8536,28 @@
 
     def test_cond_call_value_with_a_constant(self):
         ops = """
+        [p1, i1]
+        i0 = cond_call_value(1, 14, 123, p1, descr=plaincalldescr)
+        jump(p1, i0)
+        """
+        expected = """
+        [p1, i1]
+        i0 = call(123, p1, descr=plaincalldescr)
+        jump(p1, i0)
+        """
+        self.optimize_loop(ops, expected)
+
+    def test_cond_call_value_with_a_constant_2(self):
+        ops = """
+        [p1, i1]
+        i0 = cond_call_value(0, 14, 123, p1, descr=plaincalldescr)
+        i5 = int_eq(i0, 14)
+        guard_true(i5) []
+        jump(p1, i0)
+        """
+        expected = """
         [p1]
-        i0 = cond_call_value(1, 14, 123, p1, descr=plaincalldescr)
-        jump(i0)
-        """
-        expected = """
-        [p1]
-        i0 = call(123, p1, descr=plaincalldescr)
-        jump(i0)
-        """
-        self.optimize_loop(ops, expected)
-
-    def test_cond_call_value_with_a_constant_2(self):
-        ops = """
-        [p1]
-        i0 = cond_call_value(0, 14, 123, p1, descr=plaincalldescr)
-        jump(i0)
-        """
-        expected = """
-        [p1]
-        jump(14)
+        jump(p1)
         """
         self.optimize_loop(ops, expected)
 
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to