Author: Armin Rigo <[email protected]>
Branch: stm-thread-2
Changeset: r57088:b11acdef0da8
Date: 2012-09-02 17:27 +0200
http://bitbucket.org/pypy/pypy/changeset/b11acdef0da8/
Log: Also rename across links, to preserve at least the run-time
knowledge so that future barriers can be skipped.
diff --git a/pypy/translator/stm/test/test_transform2.py
b/pypy/translator/stm/test/test_transform2.py
--- a/pypy/translator/stm/test/test_transform2.py
+++ b/pypy/translator/stm/test/test_transform2.py
@@ -307,3 +307,16 @@
res = self.interpret(f1, [x, x])
assert res == 0
assert self.barriers == ['P2W', 'P2W']
+
+ def test_simple_loop(self):
+ X = lltype.GcStruct('X', ('foo', lltype.Signed))
+ def f1(x, i):
+ while i > 0:
+ x.foo = i
+ i -= 1
+ return i
+ x = lltype.malloc(X, immortal=True)
+ res = self.interpret(f1, [x, 5])
+ assert res == 0
+ # for now we get this. Later, we could probably optimize it
+ assert self.barriers == ['P2W', 'p2w', 'p2w', 'p2w', 'p2w']
diff --git a/pypy/translator/stm/transform2.py
b/pypy/translator/stm/transform2.py
--- a/pypy/translator/stm/transform2.py
+++ b/pypy/translator/stm/transform2.py
@@ -145,3 +145,7 @@
category[op.result] = 'W'
block.operations = newoperations
+ #
+ for link in block.exits:
+ for i, v in enumerate(link.args):
+ link.args[i] = renamings.get(v, v)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit