[pypy-commit] pypy default: Found the cause of the failure of test_nongc_attached_to_gc in
arigo
noreply at buildbot.pypy.org
Wed Nov 2 17:51:57 CET 2011
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r48666:548c842da8b9
Date: 2011-11-02 17:49 +0100
http://bitbucket.org/pypy/pypy/changeset/548c842da8b9/
Log: Found the cause of the failure of test_nongc_attached_to_gc in
test_newgc: we forgot to add the surviving objects from
young_objects_with_light_finalizers to the old version of that list.
Fix the test and re-enable light finalizers with minimark.
diff --git a/pypy/rpython/memory/gc/minimark.py b/pypy/rpython/memory/gc/minimark.py
--- a/pypy/rpython/memory/gc/minimark.py
+++ b/pypy/rpython/memory/gc/minimark.py
@@ -468,7 +468,7 @@
#
# If the object needs a finalizer, ask for a rawmalloc.
# The following check should be constant-folded.
- if needs_finalizer: ## and not is_finalizer_light:
+ if needs_finalizer and not is_finalizer_light:
ll_assert(not contains_weakptr,
"'needs_finalizer' and 'contains_weakptr' both specified")
obj = self.external_malloc(typeid, 0, can_make_young=False)
@@ -1850,6 +1850,9 @@
finalizer = self.getlightfinalizer(self.get_type_id(obj))
ll_assert(bool(finalizer), "no light finalizer found")
finalizer(obj, llmemory.NULL)
+ else:
+ obj = self.get_forwarding_address(obj)
+ self.old_objects_with_light_finalizers.append(obj)
def deal_with_old_objects_with_finalizers(self):
""" This is a much simpler version of dealing with finalizers
More information about the pypy-commit
mailing list