[pypy-commit] stmgc hashtable-iter: hg merge default

arigo noreply at buildbot.pypy.org
Mon Feb 2 15:49:09 CET 2015


Author: Armin Rigo <arigo at tunes.org>
Branch: hashtable-iter
Changeset: r1605:88492dc56aa8
Date: 2015-02-02 15:49 +0100
http://bitbucket.org/pypy/stmgc/changeset/88492dc56aa8/

Log:	hg merge default

diff --git a/c7/stm/finalizer.c b/c7/stm/finalizer.c
--- a/c7/stm/finalizer.c
+++ b/c7/stm/finalizer.c
@@ -138,6 +138,8 @@
         init_finalizers(f);
         STM_PSEGMENT->finalizers = f;
     }
+    assert(STM_PSEGMENT->finalizers->count_non_young
+           <= list_count(STM_PSEGMENT->finalizers->objects_with_finalizers));
     LIST_APPEND(STM_PSEGMENT->finalizers->objects_with_finalizers, obj);
     return obj;
 }
@@ -289,6 +291,8 @@
     struct list_s *lst = f->objects_with_finalizers;
     long i, count = list_count(lst);
     lst->count = 0;
+    f->count_non_young = 0;
+
     for (i = 0; i < count; i++) {
         object_t *x = (object_t *)list_item(lst, i);
 
diff --git a/c7/test/test_finalizer.py b/c7/test/test_finalizer.py
--- a/c7/test/test_finalizer.py
+++ b/c7/test/test_finalizer.py
@@ -176,12 +176,14 @@
 
     def test_finalizer_in_major_collection(self):
         self.start_transaction()
-        lp1 = stm_allocate_with_finalizer(48)
-        lp2 = stm_allocate_with_finalizer(48)
-        lp3 = stm_allocate_with_finalizer(48)
-        print lp1, lp2, lp3
-        stm_major_collect()
-        self.expect_finalized([lp1, lp2, lp3])
+        for repeat in range(2):
+            lp1 = stm_allocate_with_finalizer(48)
+            lp2 = stm_allocate_with_finalizer(48)
+            lp3 = stm_allocate_with_finalizer(48)
+            print repeat, lp1, lp2, lp3
+            self.expect_finalized([])
+            stm_major_collect()
+            self.expect_finalized([lp1, lp2, lp3])
 
     def test_finalizer_from_other_thread(self):
         self.start_transaction()


More information about the pypy-commit mailing list