[pypy-commit] pypy kill-ootype: Fix/hack handling of delayed pointers in getgraph()

rlamy noreply at buildbot.pypy.org
Thu Jul 25 17:05:59 CEST 2013


Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: kill-ootype
Changeset: r65650:76a086e7dd24
Date: 2013-07-25 16:03 +0100
http://bitbucket.org/pypy/pypy/changeset/76a086e7dd24/

Log:	Fix/hack handling of delayed pointers in getgraph()

diff --git a/rpython/translator/backendopt/graphanalyze.py b/rpython/translator/backendopt/graphanalyze.py
--- a/rpython/translator/backendopt/graphanalyze.py
+++ b/rpython/translator/backendopt/graphanalyze.py
@@ -1,3 +1,4 @@
+from rpython.rtyper.lltypesystem.lltype import DelayedPointer
 from rpython.translator.simplify import get_graph
 from rpython.tool.algo.unionfind import UnionFind
 
@@ -52,7 +53,10 @@
         return self.bottom_result()
 
     def analyze_external_call(self, op, seen=None):
-        funcobj = op.args[0].value._obj
+        try:
+            funcobj = op.args[0].value._obj
+        except DelayedPointer:
+            return self.bottom_result()
         result = self.bottom_result()
         if hasattr(funcobj, '_callbacks'):
             bk = self.translator.annotator.bookkeeper
diff --git a/rpython/translator/simplify.py b/rpython/translator/simplify.py
--- a/rpython/translator/simplify.py
+++ b/rpython/translator/simplify.py
@@ -20,7 +20,10 @@
     f = arg.value
     if not isinstance(f, lltype._ptr):
         return None
-    funcobj = f._obj
+    try:
+        funcobj = f._getobj()
+    except lltype.DelayedPointer:
+        return None
     try:
         callable = funcobj._callable
     except (AttributeError, KeyError, AssertionError):


More information about the pypy-commit mailing list