Author: Armin Rigo <ar...@tunes.org>
Branch: conditional_call_value_2
Changeset: r87001:8e0af8639310
Date: 2016-09-11 16:33 +0200
http://bitbucket.org/pypy/pypy/changeset/8e0af8639310/

Log:    Next test, passing

diff --git a/rpython/jit/metainterp/pyjitpl.py 
b/rpython/jit/metainterp/pyjitpl.py
--- a/rpython/jit/metainterp/pyjitpl.py
+++ b/rpython/jit/metainterp/pyjitpl.py
@@ -3099,7 +3099,6 @@
         arg_consts = [executor.constant_from_op(a) for a in argboxes]
         self.call_pure_results[arg_consts] = resbox_as_const
         if is_cond:
-            import pdb;pdb.set_trace()
             return op    # there is no COND_CALL_I/R
         opnum = OpHelpers.call_pure_for_descr(descr)
         self.history.cut(patch_pos)
diff --git a/rpython/jit/metainterp/resoperation.py 
b/rpython/jit/metainterp/resoperation.py
--- a/rpython/jit/metainterp/resoperation.py
+++ b/rpython/jit/metainterp/resoperation.py
@@ -884,8 +884,6 @@
     _args = None
 
     def initarglist(self, args):
-        if self.opnum == rop.CALL_PURE_I:
-            import pdb;pdb.set_trace()
         self._args = args
         if not we_are_translated() and \
                self.__class__.__name__.startswith('FINISH'):   # XXX remove me
diff --git a/rpython/jit/metainterp/test/test_call.py 
b/rpython/jit/metainterp/test/test_call.py
--- a/rpython/jit/metainterp/test/test_call.py
+++ b/rpython/jit/metainterp/test/test_call.py
@@ -116,6 +116,29 @@
         self.check_resops(call_pure_i=0, cond_call_pure_i=0, call_i=0,
                           int_sub=2)
 
+    def test_cond_call_constant_in_optimizer_2(self):
+        myjitdriver = jit.JitDriver(greens = ['m'], reds = ['n', 'p'])
+        @jit.elidable
+        def externfn(x):
+            return 2
+        class V:
+            def __init__(self, value):
+                self.value = value
+        def f(n, m, p):
+            while n > 0:
+                myjitdriver.can_enter_jit(n=n, p=p, m=m)
+                myjitdriver.jit_merge_point(n=n, p=p, m=m)
+                assert p > 14
+                assert p < 16
+                n -= jit.conditional_call_elidable(p, 15, externfn, n)
+            return n
+        res = self.meta_interp(f, [21, 5, 15])
+        assert res == -1
+        # optimizer: the COND_CALL_PURE is turned into a regular
+        # CALL_PURE, which itself becomes CALL
+        self.check_resops(call_pure_i=0, cond_call_pure_i=0, call_i=2,
+                          int_sub=2)
+
 
 class TestCall(LLJitMixin, CallTest):
     pass
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to