Author: Remi Meier <remi.me...@gmail.com>
Branch: nonmovable-int-ref
Changeset: r478:7924c243aab1
Date: 2013-08-15 13:09 +0200
http://bitbucket.org/pypy/stmgc/changeset/7924c243aab1/

Log:    merge

diff --git a/c4/gcpage.c b/c4/gcpage.c
--- a/c4/gcpage.c
+++ b/c4/gcpage.c
@@ -550,6 +550,14 @@
         visit_take_protected(d->thread_local_obj_ref);
         visit_take_protected(&d->old_thread_local_obj);
 
+        /* the abortinfo objects */
+        long i, size = d->abortinfo.size;
+        gcptr *items = d->abortinfo.items;
+        for (i = 0; i < size; i += 2) {
+            visit_take_protected(&items[i]);
+            /* items[i+1] is not a gc ptr */
+        }
+
         /* the current transaction's private copies of public objects */
         wlog_t *item;
         G2L_LOOP_FORWARD(d->public_to_private, item) {
@@ -581,8 +589,8 @@
         } G2L_LOOP_END;
 
         /* reinsert to real pub_to_priv */
-        long i, size = new_public_to_private.size;
-        gcptr *items = new_public_to_private.items;
+        size = new_public_to_private.size;
+        items = new_public_to_private.items;
         for (i = 0; i < size; i += 2) {
             g2l_insert(&d->public_to_private, items[i], items[i + 1]);
         }
diff --git a/c4/nursery.c b/c4/nursery.c
--- a/c4/nursery.c
+++ b/c4/nursery.c
@@ -436,6 +436,19 @@
     spinlock_release(d->public_descriptor->collection_lock);
 }
 
+static void mark_extra_stuff(struct tx_descriptor *d)
+{
+    visit_if_young(d->thread_local_obj_ref);
+    visit_if_young(&d->old_thread_local_obj);
+
+    long i, size = d->abortinfo.size;
+    gcptr *items = d->abortinfo.items;
+    for (i = 0; i < size; i += 2) {
+        visit_if_young(&items[i]);
+        /* items[i+1] is not a gc ptr */
+    }
+}
+
 static void minor_collect(struct tx_descriptor *d)
 {
     dprintf(("minor collection [%p to %p]\n",
@@ -451,8 +464,7 @@
 
     mark_young_roots(d);
 
-    visit_if_young(d->thread_local_obj_ref);
-    visit_if_young(&d->old_thread_local_obj);
+    mark_extra_stuff(d);
 
     mark_stolen_young_stubs(d);
 
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to