[pypy-commit] pypy default: Remove GUARD_NO_EXCEPTION after a removed COND_CALL

arigo noreply at buildbot.pypy.org
Sun Jun 15 12:58:15 CEST 2014


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r72057:7a6bc2abea20
Date: 2014-06-15 12:57 +0200
http://bitbucket.org/pypy/pypy/changeset/7a6bc2abea20/

Log:	Remove GUARD_NO_EXCEPTION after a removed COND_CALL

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
@@ -394,6 +394,7 @@
         val = self.getvalue(arg)
         if val.is_constant():
             if val.box.same_constant(CONST_0):
+                self.last_emitted_operation = REMOVED
                 return
             op = op.copy_and_change(rop.CALL, args=op.getarglist()[1:])
         self.emit_operation(op)
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
@@ -56,3 +56,18 @@
         assert self.interp_operations(main, [10]) == 1
         assert self.interp_operations(main, [5]) == 0
 
+    def test_cond_call_disappears(self):
+        driver = jit.JitDriver(greens = [], reds = ['n'])
+
+        def f(n):
+            raise ValueError
+
+        def main(n):
+            while n > 0:
+                driver.jit_merge_point(n=n)
+                jit.conditional_call(False, f, 10)
+                n -= 1
+            return 42
+
+        assert self.meta_interp(main, [10]) == 42
+        self.check_resops(guard_no_exception=0)


More information about the pypy-commit mailing list