Author: Armin Rigo <ar...@tunes.org>
Branch: trace-limit-hack
Changeset: r73210:f61a39ccf6f7
Date: 2014-08-30 18:02 +0200
http://bitbucket.org/pypy/pypy/changeset/f61a39ccf6f7/

Log:    Don't call trace_next_iteration() if we didn't call
        disable_noninlinable_function(), to avoid bad performance if we get
        a very long, flat list of operations with no disablable call.

diff --git a/rpython/jit/metainterp/pyjitpl.py 
b/rpython/jit/metainterp/pyjitpl.py
--- a/rpython/jit/metainterp/pyjitpl.py
+++ b/rpython/jit/metainterp/pyjitpl.py
@@ -1991,10 +1991,10 @@
             if greenkey_of_huge_function is not None:
                 warmrunnerstate.disable_noninlinable_function(
                     greenkey_of_huge_function)
-            if self.current_merge_points:
-                jd_sd = self.jitdriver_sd
-                greenkey = 
self.current_merge_points[0][0][:jd_sd.num_green_args]
-                warmrunnerstate.JitCell.trace_next_iteration(greenkey)
+                if self.current_merge_points:
+                    jd_sd = self.jitdriver_sd
+                    greenkey = 
self.current_merge_points[0][0][:jd_sd.num_green_args]
+                    warmrunnerstate.JitCell.trace_next_iteration(greenkey)
             raise SwitchToBlackhole(Counters.ABORT_TOO_LONG)
 
     def _interpret(self):
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to