Author: Ronan Lamy <ronan.l...@gmail.com> Branch: expressions Changeset: r74441:320c084c002c Date: 2014-11-10 18:51 +0000 http://bitbucket.org/pypy/pypy/changeset/320c084c002c/
Log: refactor join_blocks() diff --git a/rpython/translator/simplify.py b/rpython/translator/simplify.py --- a/rpython/translator/simplify.py +++ b/rpython/translator/simplify.py @@ -63,26 +63,19 @@ When this happens, we need to replace the preceeding link with the following link. Arguments of the links should be updated.""" for link in list(graph.iterlinks()): - while not link.target.operations: - block1 = link.target - if block1.exitswitch is not None: - break - if not block1.exits: - break - exit = block1.exits[0] - assert block1 is not exit.target, ( - "the graph contains an empty infinite loop") - outputargs = [] - for v in exit.args: - if isinstance(v, Variable): - # this variable is valid in the context of block1 - # but it must come from 'link' - i = block1.inputargs.index(v) - v = link.args[i] - outputargs.append(v) - link.args = outputargs - link.target = exit.target - # the while loop above will simplify recursively the new link + while not link.target.operations: + block1 = link.target + if block1.exitswitch is not None: + break + if not block1.exits: + break + exit = block1.exits[0] + assert block1 is not exit.target, ( + "the graph contains an empty infinite loop") + subst = dict(zip(block1.inputargs, link.args)) + link.args = [v.replace(subst) for v in exit.args] + link.target = exit.target + # the while loop above will simplify recursively the new link def transform_ovfcheck(graph): """The special function calls ovfcheck needs to _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit