Author: Richard Plangger <[email protected]>
Branch: new-jit-log
Changeset: r83901:ebe7bd49cf45
Date: 2016-04-26 10:54 +0200
http://bitbucket.org/pypy/pypy/changeset/ebe7bd49cf45/
Log: setting the metainterp_sd earlier to be able to resolve constptr
even for the trace that has not been optimized
diff --git a/rpython/jit/metainterp/compile.py
b/rpython/jit/metainterp/compile.py
--- a/rpython/jit/metainterp/compile.py
+++ b/rpython/jit/metainterp/compile.py
@@ -253,7 +253,7 @@
trace = history.trace
warmstate = jitdriver_sd.warmstate
#
- metainterp_sd.jitlog.start_new_trace(None, False)
+ metainterp_sd.jitlog.start_new_trace(metainterp_sd, None, False)
#
enable_opts = jitdriver_sd.warmstate.enable_opts
if try_disabling_unroll:
@@ -347,7 +347,7 @@
jitdriver_sd = metainterp.jitdriver_sd
history = metainterp.history
#
- metainterp_sd.jitlog.start_new_trace(resumekey, False)
+ metainterp_sd.jitlog.start_new_trace(metainterp_sd, resumekey, False)
#
loop_jitcell_token = metainterp.get_procedure_token(greenkey)
assert loop_jitcell_token
@@ -512,7 +512,7 @@
def send_loop_to_backend(greenkey, jitdriver_sd, metainterp_sd, loop, type,
orig_inpargs, memo):
- metainterp_sd.jitlog.start_new_trace(None, type == "entry bridge")
+ metainterp_sd.jitlog.start_new_trace(metainterp_sd, None, type == "entry
bridge")
forget_optimization_info(loop.operations)
forget_optimization_info(loop.inputargs)
vinfo = jitdriver_sd.virtualizable_info
@@ -1039,7 +1039,7 @@
metainterp_sd = metainterp.staticdata
jitdriver_sd = metainterp.jitdriver_sd
#
- metainterp_sd.jitlog.start_new_trace(resumekey, False)
+ metainterp_sd.jitlog.start_new_trace(metainterp_sd, resumekey, False)
#
if isinstance(resumekey, ResumeAtPositionDescr):
inline_short_preamble = False
diff --git a/rpython/rlib/jitlog.py b/rpython/rlib/jitlog.py
--- a/rpython/rlib/jitlog.py
+++ b/rpython/rlib/jitlog.py
@@ -209,6 +209,7 @@
self.cintf = cintf.setup()
self.memo = {}
self.trace_id = -1
+ self.metainterp_sd = None
def setup_once(self):
if self.cintf.jitlog_enabled():
@@ -222,9 +223,10 @@
def finish(self):
self.cintf.jitlog_teardown()
- def start_new_trace(self, faildescr=None, entry_bridge=False):
+ def start_new_trace(self, metainterp_sd, faildescr=None,
entry_bridge=False):
if not self.cintf.jitlog_enabled():
return
+ self.metainterp_sd = metainterp_sd
self.trace_id += 1
content = [encode_le_addr(self.trace_id)]
if faildescr:
@@ -255,10 +257,11 @@
def log_trace(self, tag, metainterp_sd, mc, memo=None):
if not self.cintf.jitlog_enabled():
return EMPTY_TRACE_LOG
+ assert self.metainterp_sd is not None
assert isinstance(tag, int)
if memo is None:
memo = {}
- return LogTrace(tag, memo, metainterp_sd, mc, self)
+ return LogTrace(tag, memo, self.metainterp_sd, mc, self)
def log_patch_guard(self, descr_number, addr):
if not self.cintf.jitlog_enabled():
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit