[pypy-commit] pypy result-in-resops: sharing lists is not a good idea. ever
fijal
noreply at buildbot.pypy.org
Fri Oct 26 13:28:31 CEST 2012
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: result-in-resops
Changeset: r58446:f84873f1f80a
Date: 2012-10-25 15:17 +0200
http://bitbucket.org/pypy/pypy/changeset/f84873f1f80a/
Log: sharing lists is not a good idea. ever
diff --git a/pypy/jit/metainterp/optimizeopt/optimizer.py b/pypy/jit/metainterp/optimizeopt/optimizer.py
--- a/pypy/jit/metainterp/optimizeopt/optimizer.py
+++ b/pypy/jit/metainterp/optimizeopt/optimizer.py
@@ -531,6 +531,11 @@
for opt in reversed(self.optimizations):
opt.postprocess_op(orig_op)
i += 1
+ # clean up
+ for op in self.loop.operations:
+ op._forwarded = None
+ for arg in self.loop.inputargs:
+ arg._forwarded = None
self.loop.operations = self.get_newoperations()
self.loop.quasi_immutable_deps = self.quasi_immutable_deps
# accumulate counters
diff --git a/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py b/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py
--- a/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py
+++ b/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py
@@ -118,7 +118,7 @@
def optimize_loop(self, ops, optops, results=None):
loop = self.parse(ops, results=results)
token = JitCellToken()
- loop.operations = [create_resop(rop.LABEL, None, loop.inputargs, descr=TargetToken(token))] + \
+ loop.operations = [create_resop(rop.LABEL, None, loop.inputargs[:], descr=TargetToken(token))] + \
loop.operations
if loop.operations[-1].getopnum() == rop.JUMP:
loop.operations[-1]._descr = token
@@ -148,18 +148,18 @@
def test_constant_propagate(self):
ops = """
[i]
- guard_value(i, 2) []
+ guard_value(i, 2)
i0 = int_add(i, 3)
i1 = int_is_true(i0)
- guard_true(i1) []
+ guard_true(i1)
i2 = int_is_zero(i1)
- guard_false(i2) []
- guard_value(i0, 5) []
+ guard_false(i2)
+ guard_value(i0, 5)
jump(i)
"""
expected = """
[i]
- guard_value(i, 2) []
+ guard_value(i, 2)
jump(2)
"""
self.optimize_loop(ops, expected)
diff --git a/pypy/jit/metainterp/optimizeopt/test/test_util.py b/pypy/jit/metainterp/optimizeopt/test/test_util.py
--- a/pypy/jit/metainterp/optimizeopt/test/test_util.py
+++ b/pypy/jit/metainterp/optimizeopt/test/test_util.py
@@ -413,7 +413,7 @@
from pypy.jit.metainterp.optimizeopt.util import equaloplists
assert len(optimized.inputargs) == len(expected.inputargs)
remap = {}
- for box1, box2 in zip(optimized.inputargs, expected.inputargs):
+ for box1, box2 in zip(optimized.operations[0].getarglist(), expected.inputargs):
#assert box1.__class__ == box2.__class__
remap[box2] = box1
assert equaloplists(optimized.operations,
@@ -501,7 +501,7 @@
def convert_old_style_to_targets(loop, jump):
newloop = TreeLoop(loop.name)
newloop.inputargs = loop.inputargs
- newloop.operations = [create_resop(rop.LABEL, None, loop.inputargs, descr=FakeDescr())] + \
+ newloop.operations = [create_resop(rop.LABEL, None, loop.inputargs[:], descr=FakeDescr())] + \
loop.operations
if not jump:
assert newloop.operations[-1].getopnum() == rop.JUMP
More information about the pypy-commit
mailing list