[pypy-commit] pypy gc-forkfriendly: hg merge default
devin.jeanpierre
pypy.commits at gmail.com
Mon May 2 18:41:02 EDT 2016
Author: Devin Jeanpierre <jeanpierreda at gmail.com>
Branch: gc-forkfriendly
Changeset: r84148:eb1b0eb99f2f
Date: 2016-05-02 10:50 -0700
http://bitbucket.org/pypy/pypy/changeset/eb1b0eb99f2f/
Log: hg merge default
diff --git a/rpython/translator/backendopt/test/test_finalizer.py b/rpython/translator/backendopt/test/test_finalizer.py
--- a/rpython/translator/backendopt/test/test_finalizer.py
+++ b/rpython/translator/backendopt/test/test_finalizer.py
@@ -35,31 +35,6 @@
r = self.analyze(f, [])
assert not r
-def test_various_ops():
- from rpython.flowspace.model import SpaceOperation, Constant
-
- X = lltype.Ptr(lltype.GcStruct('X'))
- Z = lltype.Ptr(lltype.Struct('Z'))
- S = lltype.GcStruct('S', ('x', lltype.Signed),
- ('y', X),
- ('z', Z))
- v1 = varoftype(lltype.Bool)
- v2 = varoftype(lltype.Signed)
- f = FinalizerAnalyzer(None)
- r = f.analyze(SpaceOperation('cast_int_to_bool', [v2],
- v1))
- assert not r
- v1 = varoftype(lltype.Ptr(S))
- v2 = varoftype(lltype.Signed)
- v3 = varoftype(X)
- v4 = varoftype(Z)
- assert not f.analyze(SpaceOperation('bare_setfield', [v1, Constant('x'),
- v2], None))
- assert f.analyze(SpaceOperation('bare_setfield', [v1, Constant('y'),
- v3], None))
- assert not f.analyze(SpaceOperation('bare_setfield', [v1, Constant('z'),
- v4], None))
-
def test_malloc(self):
S = lltype.GcStruct('S')
@@ -100,6 +75,22 @@
lltype.free(p, flavor='raw')
r = self.analyze(g, [], f, backendopt=True)
+ assert r
+
+ def test_c_call_without_release_gil(self):
+ C = rffi.CArray(lltype.Signed)
+ c = rffi.llexternal('x', [lltype.Ptr(C)], lltype.Signed,
+ releasegil=False)
+
+ def g():
+ p = lltype.malloc(C, 3, flavor='raw')
+ f(p)
+
+ def f(p):
+ c(rffi.ptradd(p, 0))
+ lltype.free(p, flavor='raw')
+
+ r = self.analyze(g, [], f, backendopt=True)
assert not r
def test_chain(self):
@@ -131,3 +122,30 @@
pass
self.analyze(g, []) # did not explode
py.test.raises(FinalizerError, self.analyze, f, [])
+
+
+def test_various_ops():
+ from rpython.flowspace.model import SpaceOperation, Constant
+
+ X = lltype.Ptr(lltype.GcStruct('X'))
+ Z = lltype.Ptr(lltype.Struct('Z'))
+ S = lltype.GcStruct('S', ('x', lltype.Signed),
+ ('y', X),
+ ('z', Z))
+ v1 = varoftype(lltype.Bool)
+ v2 = varoftype(lltype.Signed)
+ f = FinalizerAnalyzer(None)
+ r = f.analyze(SpaceOperation('cast_int_to_bool', [v2],
+ v1))
+ assert not r
+ v1 = varoftype(lltype.Ptr(S))
+ v2 = varoftype(lltype.Signed)
+ v3 = varoftype(X)
+ v4 = varoftype(Z)
+ assert not f.analyze(SpaceOperation('bare_setfield', [v1, Constant('x'),
+ v2], None))
+ assert f.analyze(SpaceOperation('bare_setfield', [v1, Constant('y'),
+ v3], None))
+ assert not f.analyze(SpaceOperation('bare_setfield', [v1, Constant('z'),
+ v4], None))
+
More information about the pypy-commit
mailing list