[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