[pypy-commit] pypy default: Tweak gc.collect() when gc.disable() was called, see comment
arigo
pypy.commits at gmail.com
Thu Dec 1 11:23:03 EST 2016
Author: Armin Rigo <arigo at tunes.org>
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):
More information about the pypy-commit
mailing list