[pypy-svn] r10923 - pypy/branch/canonlyraise-pypy/objspace/flow
arigo at codespeak.net
arigo at codespeak.net
Wed Apr 20 17:23:50 CEST 2005
Author: arigo
Date: Wed Apr 20 17:23:49 2005
New Revision: 10923
Modified:
pypy/branch/canonlyraise-pypy/objspace/flow/model.py
Log:
More precise checkgraph(), looking for badly placed last_exception and
last_exc_value.
Modified: pypy/branch/canonlyraise-pypy/objspace/flow/model.py
==============================================================================
--- pypy/branch/canonlyraise-pypy/objspace/flow/model.py (original)
+++ pypy/branch/canonlyraise-pypy/objspace/flow/model.py Wed Apr 20 17:23:49 2005
@@ -332,6 +332,10 @@
assert isinstance(v, (Constant, Variable))
if isinstance(v, Variable):
assert v in vars
+ else:
+ assert v.value != last_exception
+ assert v.value != last_exc_value
+ exc_links = {}
if block.exitswitch is None:
assert len(block.exits) <= 1
if block.exits:
@@ -342,16 +346,24 @@
assert block.exits[0].exitcase is None
for link in block.exits[1:]:
assert issubclass(link.exitcase, Exception)
+ exc_links[link] = True
else:
assert isinstance(block.exitswitch, Variable)
assert block.exitswitch in vars
for link in block.exits:
assert len(link.args) == len(link.target.inputargs)
assert link.prevblock is block
+ exc_link = link in exc_links
for v in link.args:
assert isinstance(v, (Constant, Variable))
if isinstance(v, Variable):
assert v in vars
+ if exc_link:
+ assert v != block.operations[-1].result
+ else:
+ if not exc_link:
+ assert v.value != last_exception
+ assert v.value != last_exc_value
vars_previous_blocks.update(vars)
try:
More information about the Pypy-commit
mailing list