Author: Hakan Ardo <ha...@debian.org>
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
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to