Author: Armin Rigo <[email protected]>
Branch: stmgc-static-barrier
Changeset: r66176:38cddaeaa1c3
Date: 2013-08-17 10:37 +0200
http://bitbucket.org/pypy/pypy/changeset/38cddaeaa1c3/
Log: Test failing because of the XXX in writebarrier.py
diff --git a/rpython/translator/stm/test/test_writebarrier.py
b/rpython/translator/stm/test/test_writebarrier.py
--- a/rpython/translator/stm/test/test_writebarrier.py
+++ b/rpython/translator/stm/test/test_writebarrier.py
@@ -280,6 +280,50 @@
assert res == 815
assert self.barriers == ['a2r', 'a2i']
+ def test_no_subclasses_2(self):
+ class Y(object):
+ pass
+ def handle(y):
+ y.ybar += 1
+ def make_y(i):
+ y = Y(); y.foo = 42; y.ybar = i
+ return y
+ def f1(i):
+ y = make_y(i)
+ external_any_gcobj()
+ prev = y.ybar # a2r
+ handle(y) # inside handle(): a2r, r2w
+ return prev + y.ybar # q2r
+
+ res = self.interpret(f1, [10])
+ assert res == 21
+ assert self.barriers == ['a2r', 'a2r', 'r2w', 'q2r']
+
+ def test_subclassing_2(self):
+ class X:
+ __slots__ = ['foo']
+ class Y(X):
+ pass
+ class Z(X):
+ pass
+ def handle(y):
+ y.ybar += 1
+ def f1(i):
+ if i > 5:
+ y = Y(); y.foo = 42; y.ybar = i
+ x = y
+ else:
+ x = Z(); x.foo = 815; x.zbar = 'A'
+ y = Y(); y.foo = -13; y.ybar = i
+ external_any_gcobj()
+ prev = x.foo # a2r
+ handle(y) # inside handle(): a2r, r2w
+ return prev + x.foo # q2r
+
+ res = self.interpret(f1, [10])
+ assert res == 84
+ assert self.barriers == ['a2r', 'a2r', 'r2w', 'q2r']
+
def test_write_barrier_repeated(self):
class X:
pass
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit