[pypy-commit] pypy default: (cfbolz, arigo) Improve the error message in the case where the same jitdriver
arigo
noreply at buildbot.pypy.org
Tue Aug 11 14:55:02 CEST 2015
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r78891:7a82bbfa8b25
Date: 2015-08-11 13:56 +0100
http://bitbucket.org/pypy/pypy/changeset/7a82bbfa8b25/
Log: (cfbolz, arigo) Improve the error message in the case where the
same jitdriver is used twice (this is about the case of reds='auto'
only)
diff --git a/rpython/jit/codewriter/support.py b/rpython/jit/codewriter/support.py
--- a/rpython/jit/codewriter/support.py
+++ b/rpython/jit/codewriter/support.py
@@ -79,6 +79,9 @@
assert methname == 'jit_merge_point', (
"reds='auto' is supported only for jit drivers which "
"calls only jit_merge_point. Found a call to %s" % methname)
+ if jitdriver.numreds is not None:
+ raise AssertionError("there are multiple jit_merge_points "
+ "with the same jitdriver")
#
# compute the set of live variables across the jit_marker
alive_v = set()
@@ -96,10 +99,7 @@
v.concretetype is not lltype.Void]
reds_v = sort_vars(reds_v)
op.args.extend(reds_v)
- if jitdriver.numreds is None:
- jitdriver.numreds = len(reds_v)
- else:
- assert jitdriver.numreds == len(reds_v), 'inconsistent number of reds_v'
+ jitdriver.numreds = len(reds_v)
def split_before_jit_merge_point(graph, portalblock, portalopindex):
"""Split the block just before the 'jit_merge_point',
diff --git a/rpython/jit/metainterp/test/test_warmspot.py b/rpython/jit/metainterp/test/test_warmspot.py
--- a/rpython/jit/metainterp/test/test_warmspot.py
+++ b/rpython/jit/metainterp/test/test_warmspot.py
@@ -558,6 +558,22 @@
assert res == 7 - 3
self.check_trace_count(2)
+ def test_jitdriver_single_jit_merge_point(self):
+ jitdriver = JitDriver(greens=[], reds='auto')
+ def g1(n):
+ jitdriver.jit_merge_point()
+ return n
+ def g2():
+ jitdriver.jit_merge_point()
+ def f(n):
+ if n:
+ g1(n)
+ else:
+ g2()
+ e = py.test.raises(AssertionError, self.meta_interp, f, [42])
+ assert str(e.value) == ("there are multiple jit_merge_points "
+ "with the same jitdriver")
+
class TestLLWarmspot(WarmspotTests, LLJitMixin):
CPUClass = runner.LLGraphCPU
More information about the pypy-commit
mailing list