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

Reply via email to