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