[pypy-svn] r24527 - in pypy/dist/pypy/translator/backendopt: . test

cfbolz at codespeak.net cfbolz at codespeak.net
Fri Mar 17 18:23:08 CET 2006


Author: cfbolz
Date: Fri Mar 17 18:22:57 2006
New Revision: 24527

Modified:
   pypy/dist/pypy/translator/backendopt/canraise.py
   pypy/dist/pypy/translator/backendopt/test/test_canraise.py
Log:
make the case work where indirect_call does not have the called graphs attached


Modified: pypy/dist/pypy/translator/backendopt/canraise.py
==============================================================================
--- pypy/dist/pypy/translator/backendopt/canraise.py	(original)
+++ pypy/dist/pypy/translator/backendopt/canraise.py	Fri Mar 17 18:22:57 2006
@@ -49,6 +49,8 @@
         return False
 
     def indirect_call_can_raise(self, graphs, seen=None):
+        if graphs is None:
+            return True
         for graph in graphs:
             if self.direct_call_can_raise(graph, seen):
                 return True

Modified: pypy/dist/pypy/translator/backendopt/test/test_canraise.py
==============================================================================
--- pypy/dist/pypy/translator/backendopt/test/test_canraise.py	(original)
+++ pypy/dist/pypy/translator/backendopt/test/test_canraise.py	Fri Mar 17 18:22:57 2006
@@ -70,3 +70,22 @@
     fgraph = graphof(t, f)
     result = ra.can_raise(fgraph.startblock.operations[0])
     assert result
+
+def test_instantiate():
+    from pypy.rpython.objectmodel import instantiate
+    class A:
+        pass 
+    class B(A):
+        pass
+    def g(x):
+        if x:
+            C = A
+        else:
+            C = B
+        a = instantiate(C)
+    def f(x):
+        return g(x)
+    t, ra = translate(f, [int])
+    fgraph = graphof(t, f)
+    result = ra.can_raise(fgraph.startblock.operations[0])
+    assert result



More information about the Pypy-commit mailing list