[pypy-commit] pypy share-guard-info: a test and a fix
fijal
noreply at buildbot.pypy.org
Mon Sep 14 16:19:43 CEST 2015
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: share-guard-info
Changeset: r79634:3d7fa664b255
Date: 2015-09-14 16:19 +0200
http://bitbucket.org/pypy/pypy/changeset/3d7fa664b255/
Log: a test and a fix
diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py b/rpython/jit/metainterp/optimizeopt/optimizer.py
--- a/rpython/jit/metainterp/optimizeopt/optimizer.py
+++ b/rpython/jit/metainterp/optimizeopt/optimizer.py
@@ -598,7 +598,8 @@
descr = compile.invent_fail_descr_for_op(guard_op.getopnum(), self)
descr.copy_all_attributes_from(last_guard_op.getdescr())
guard_op.setdescr(descr)
- guard_op.setfailargs(last_guard_op.getfailargs())
+ descr.store_final_boxes(guard_op, last_guard_op.getfailargs(),
+ self.metainterp_sd)
if guard_op.getopnum() == rop.GUARD_VALUE:
guard_op = self._maybe_replace_guard_value(guard_op, descr)
return guard_op
diff --git a/rpython/jit/metainterp/test/test_loop.py b/rpython/jit/metainterp/test/test_loop.py
--- a/rpython/jit/metainterp/test/test_loop.py
+++ b/rpython/jit/metainterp/test/test_loop.py
@@ -1069,6 +1069,26 @@
res = self.meta_interp(run, [42], backendopt=True)
assert res == 420
+ def test_not_too_many_bridges(self):
+ jitdriver = JitDriver(greens = [], reds = 'auto')
+
+ def f(i):
+ s = 0
+ while i > 0:
+ jitdriver.jit_merge_point()
+ if i % 2 == 0:
+ s += 1
+ elif i % 3 == 0:
+ s += 1
+ elif i % 5 == 0:
+ s += 1
+ elif i % 7 == 0:
+ s += 1
+ i -= 1
+ return s
+
+ self.meta_interp(f, [30])
+ self.check_trace_count(4)
class TestLLtype(LoopTest, LLJitMixin):
pass
More information about the pypy-commit
mailing list