Author: Armin Rigo <[email protected]>
Branch:
Changeset: r88794:2aa7dea5ad0f
Date: 2016-12-01 17:21 +0100
http://bitbucket.org/pypy/pypy/changeset/2aa7dea5ad0f/
Log: Tweak gc.collect() when gc.disable() was called, see comment
diff --git a/pypy/module/gc/interp_gc.py b/pypy/module/gc/interp_gc.py
--- a/pypy/module/gc/interp_gc.py
+++ b/pypy/module/gc/interp_gc.py
@@ -14,7 +14,19 @@
cache.clear()
cache = space.fromcache(MapAttrCache)
cache.clear()
+
rgc.collect()
+
+ # if we are running in gc.disable() mode but gc.collect() is called,
+ # we should still call the finalizers now. We do this as an attempt
+ # to get closer to CPython's behavior: in Py3.5 some tests
+ # specifically rely on that. This is similar to how, in CPython, an
+ # explicit gc.collect() will invoke finalizers from cycles and fully
+ # ignore the gc.disable() mode.
+ if not space.user_del_action.enabled_at_app_level:
+ enable_finalizers(space)
+ disable_finalizers(space)
+
return space.wrap(0)
def enable(space):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit