[pypy-commit] pypy fix-sre-problems: - remove frontend_tag_overflow
cfbolz
pypy.commits at gmail.com
Wed Mar 28 04:50:31 EDT 2018
Author: Carl Friedrich Bolz-Tereick <cfbolz at gmx.de>
Branch: fix-sre-problems
Changeset: r94154:c7964f0be55f
Date: 2018-03-28 10:49 +0200
http://bitbucket.org/pypy/pypy/changeset/c7964f0be55f/
Log: - remove frontend_tag_overflow
- rename done to not clash with TraceIterator.done
- add a defensive assert there
diff --git a/rpython/jit/metainterp/opencoder.py b/rpython/jit/metainterp/opencoder.py
--- a/rpython/jit/metainterp/opencoder.py
+++ b/rpython/jit/metainterp/opencoder.py
@@ -49,13 +49,6 @@
way up to lltype.Signed for indexes everywhere
"""
-def frontend_tag_overflow():
- # Minor abstraction leak: raise directly the right exception
- # expected by the rest of the machinery
- from rpython.jit.metainterp import history
- from rpython.rlib.jit import Counters
- raise history.SwitchToBlackhole(Counters.ABORT_TOO_LONG)
-
class BaseTrace(object):
pass
@@ -306,8 +299,10 @@
self._ops[self._pos] = rffi.cast(model.STORAGE_TP, v)
self._pos += 1
- def done(self):
+ def tracing_done(self, abandoned_trace=False):
from rpython.rlib.debug import debug_start, debug_stop, debug_print
+ if not abandoned_trace:
+ assert not self.tag_overflow
self._bigints_dict = {}
self._refs_dict = llhelper.new_ref_dict_3()
@@ -319,8 +314,6 @@
debug_print(" ref consts: " + str(self._consts_ptr) + " " + str(len(self._refs)))
debug_print(" descrs: " + str(len(self._descrs)))
debug_stop("jit-trace-done")
- return 0 # completely different than TraceIter.done, but we have to
- # share the base class
def length(self):
return self._pos
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
@@ -2387,7 +2387,7 @@
if (self.history.length() > warmrunnerstate.trace_limit or
self.history.trace_tag_overflow()):
jd_sd, greenkey_of_huge_function = self.find_biggest_function()
- self.history.trace.done()
+ self.history.trace.tracing_done(abandoned_trace=True)
self.staticdata.stats.record_aborted(greenkey_of_huge_function)
self.portal_trace_positions = None
if greenkey_of_huge_function is not None:
@@ -2690,7 +2690,7 @@
try_disabling_unroll=False, exported_state=None):
num_green_args = self.jitdriver_sd.num_green_args
greenkey = original_boxes[:num_green_args]
- self.history.trace.done()
+ self.history.trace.tracing_done()
if not self.partial_trace:
ptoken = self.get_procedure_token(greenkey)
if ptoken is not None and ptoken.target_tokens is not None:
@@ -2743,7 +2743,7 @@
self.history.record(rop.JUMP, live_arg_boxes[num_green_args:], None,
descr=target_jitcell_token)
self.history.ends_with_jump = True
- self.history.trace.done()
+ self.history.trace.tracing_done()
try:
target_token = compile.compile_trace(self, self.resumekey,
live_arg_boxes[num_green_args:])
@@ -2777,7 +2777,7 @@
assert False
# FIXME: can we call compile_trace?
self.history.record(rop.FINISH, exits, None, descr=token)
- self.history.trace.done()
+ self.history.trace.tracing_done()
target_token = compile.compile_trace(self, self.resumekey, exits)
if target_token is not token:
compile.giveup()
@@ -2803,7 +2803,7 @@
sd = self.staticdata
token = sd.exit_frame_with_exception_descr_ref
self.history.record(rop.FINISH, [valuebox], None, descr=token)
- self.history.trace.done()
+ self.history.trace.tracing_done()
target_token = compile.compile_trace(self, self.resumekey, [valuebox])
if target_token is not token:
compile.giveup()
More information about the pypy-commit
mailing list