[pypy-commit] pypy trace-limit-hack: Don't call trace_next_iteration() if we didn't call

arigo noreply at buildbot.pypy.org
Sat Aug 30 18:02:18 CEST 2014


Author: Armin Rigo <arigo at 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):


More information about the pypy-commit mailing list