[pypy-commit] pypy jit-targets: Bah. Fix.

arigo noreply at buildbot.pypy.org
Mon Nov 7 17:53:42 CET 2011


Author: Armin Rigo <arigo at tunes.org>
Branch: jit-targets
Changeset: r48872:50c584a30bb4
Date: 2011-11-07 17:53 +0100
http://bitbucket.org/pypy/pypy/changeset/50c584a30bb4/

Log:	Bah. Fix.

diff --git a/pypy/jit/metainterp/compile.py b/pypy/jit/metainterp/compile.py
--- a/pypy/jit/metainterp/compile.py
+++ b/pypy/jit/metainterp/compile.py
@@ -87,6 +87,8 @@
             # constrcucted. if that did not happen the label should not show up
             # in a trace that will be used
             assert descr.exported_state is None 
+            if not we_are_translated():
+                op._descr_wref = weakref.ref(op._descr)
             op._descr = None    # clear reference, mostly for tests
     # record this looptoken on the QuasiImmut used in the code
     if loop.quasi_immutable_deps is not None:
diff --git a/pypy/jit/metainterp/graphpage.py b/pypy/jit/metainterp/graphpage.py
--- a/pypy/jit/metainterp/graphpage.py
+++ b/pypy/jit/metainterp/graphpage.py
@@ -26,6 +26,13 @@
 def is_interesting_guard(op):
     return hasattr(op.getdescr(), '_debug_suboperations')
 
+def getdescr(op):
+    if op._descr is not None:
+        return op._descr
+    if hasattr(op, '_descr_wref'):
+        return op._descr_wref()
+    return None
+
 
 class ResOpGraphPage(GraphPage):
 
@@ -77,7 +84,7 @@
                         mergepointblock = i
                 elif op.getopnum() == rop.LABEL:
                     self.mark_starter(graphindex, i)
-                    self.target_tokens[op.getdescr()] = (graphindex, i)
+                    self.target_tokens[getdescr(op)] = (graphindex, i)
                     mergepointblock = i
                 else:
                     if mergepointblock is not None:
@@ -172,8 +179,8 @@
                              (graphindex, opindex))
                 break
         if op.getopnum() == rop.JUMP:
-            tgt_descr = op.getdescr()
-            if tgt_descr in self.target_tokens:
+            tgt_descr = getdescr(op)
+            if tgt_descr is not None and tgt_descr in self.target_tokens:
                 self.genedge((graphindex, opstartindex),
                              self.target_tokens[tgt_descr],
                              weight="0")


More information about the pypy-commit mailing list