[pypy-commit] pypy default: Write a test for max_unroll_loops, based on an idea by Hakan.
arigo
noreply at buildbot.pypy.org
Sat Jan 14 12:49:12 CET 2012
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r51302:039bd6756d51
Date: 2012-01-14 12:48 +0100
http://bitbucket.org/pypy/pypy/changeset/039bd6756d51/
Log: Write a test for max_unroll_loops, based on an idea by Hakan.
diff --git a/pypy/jit/metainterp/test/test_ajit.py b/pypy/jit/metainterp/test/test_ajit.py
--- a/pypy/jit/metainterp/test/test_ajit.py
+++ b/pypy/jit/metainterp/test/test_ajit.py
@@ -2629,6 +2629,38 @@
self.check_jitcell_token_count(1)
self.check_target_token_count(5)
+ def test_max_unroll_loops(self):
+ from pypy.jit.metainterp.optimize import InvalidLoop
+ from pypy.jit.metainterp import optimizeopt
+ myjitdriver = JitDriver(greens = [], reds = ['n', 'i'])
+ #
+ def f(n, limit):
+ set_param(myjitdriver, 'threshold', 5)
+ set_param(myjitdriver, 'max_unroll_loops', limit)
+ i = 0
+ while i < n:
+ myjitdriver.jit_merge_point(n=n, i=i)
+ print i
+ i += 1
+ return i
+ #
+ def my_optimize_trace(*args, **kwds):
+ raise InvalidLoop
+ old_optimize_trace = optimizeopt.optimize_trace
+ optimizeopt.optimize_trace = my_optimize_trace
+ try:
+ res = self.meta_interp(f, [23, 4])
+ assert res == 23
+ self.check_trace_count(0)
+ self.check_aborted_count(3)
+ #
+ res = self.meta_interp(f, [23, 20])
+ assert res == 23
+ self.check_trace_count(0)
+ self.check_aborted_count(2)
+ finally:
+ optimizeopt.optimize_trace = old_optimize_trace
+
def test_retrace_limit_with_extra_guards(self):
myjitdriver = JitDriver(greens = [], reds = ['n', 'i', 'sa', 'a',
'node'])
More information about the pypy-commit
mailing list