Author: Hakan Ardo <[email protected]>
Branch: jit-usable_retrace_3
Changeset: r59613:0f1ddcb9d612
Date: 2012-12-28 16:32 +0100
http://bitbucket.org/pypy/pypy/changeset/0f1ddcb9d612/
Log: reuse preamble boxnames as far as possible to reduce the amount of
SAME_AS ops
diff --git a/pypy/jit/metainterp/compile.py b/pypy/jit/metainterp/compile.py
--- a/pypy/jit/metainterp/compile.py
+++ b/pypy/jit/metainterp/compile.py
@@ -252,14 +252,20 @@
assert jumpop.getopnum() == rop.JUMP
preamble.operations = preamble.operations[1:-1]
- newargs = [a.clonebox() for a in jumpop.getarglist()]
+ usedboxes = {}
+ newargs = [None] * jumpop.numargs()
for i in range(jumpop.numargs()):
- a1, a2 = jumpop.getarg(i), newargs[i]
- preamble.operations.append(ResOperation(rop.SAME_AS, [a1], a2))
+ arg = jumpop.getarg(i)
+ if isinstance(arg, Const) or arg in usedboxes:
+ newargs[i] = arg.clonebox()
+ preamble.operations.append(ResOperation(rop.SAME_AS, [arg],
newargs[i]))
+ else:
+ newargs[i] = arg
+ usedboxes[arg] = True
inliner = Inliner(loop.operations[0].getarglist(), newargs)
loop.operations = [inliner.inline_op(op, clone=False) for op in
loop.operations]
-
+
except InvalidLoop:
preamble.operations = [orignial_label] + \
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit