Author: Hakan Ardo <[email protected]>
Branch: jit-targets
Changeset: r48936:5a5c19100cf4
Date: 2011-11-08 14:09 +0100
http://bitbucket.org/pypy/pypy/changeset/5a5c19100cf4/
Log: support max_retrace_guards
diff --git a/pypy/jit/metainterp/optimizeopt/unroll.py
b/pypy/jit/metainterp/optimizeopt/unroll.py
--- a/pypy/jit/metainterp/optimizeopt/unroll.py
+++ b/pypy/jit/metainterp/optimizeopt/unroll.py
@@ -322,6 +322,10 @@
raise InvalidLoop
debug_stop('jit-log-virtualstate')
+ maxguards =
self.optimizer.metainterp_sd.warmrunnerdesc.memory_manager.max_retrace_guards
+ if self.optimizer.emitted_guards > maxguards:
+ jumpop.getdescr().targeting_jitcell_token.retraced_count =
sys.maxint
+
def finilize_short_preamble(self, start_label):
short = self.short
assert short[-1].getopnum() == rop.JUMP
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
@@ -2599,10 +2599,10 @@
return sa
assert self.meta_interp(f, [20, 2]) == f(20, 2)
self.check_jitcell_token_count(1)
- assert len(get_stats().jitcell_tokens.pop().target_tokens) == 4
+ assert len(list(get_stats().jitcell_tokens)[0].target_tokens) == 4
assert self.meta_interp(f, [20, 3]) == f(20, 3)
self.check_jitcell_token_count(1)
- assert len(get_stats().jitcell_tokens.pop().target_tokens) == 5
+ assert len(list(get_stats().jitcell_tokens)[0].target_tokens) == 5
def test_max_retrace_guards(self):
myjitdriver = JitDriver(greens = [], reds = ['n', 'i', 'sa', 'a'])
@@ -2619,10 +2619,11 @@
i += 1
return sa
assert self.meta_interp(f, [20, 1]) == f(20, 1)
- self.check_jitcell_token_count(2)
+ self.check_jitcell_token_count(1)
+ assert len(list(get_stats().jitcell_tokens)[0].target_tokens) == 2
assert self.meta_interp(f, [20, 10]) == f(20, 10)
- self.check_jitcell_token_count(5)
-
+ self.check_jitcell_token_count(1)
+ assert len(list(get_stats().jitcell_tokens)[0].target_tokens) == 5
def test_retrace_limit_with_extra_guards(self):
myjitdriver = JitDriver(greens = [], reds = ['n', 'i', 'sa', 'a',
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit