[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