Author: Armin Rigo <[email protected]>
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
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit