[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