Author: Maciej Fijalkowski <[email protected]>
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
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit