Author: Armin Rigo <[email protected]>
Branch: 
Changeset: r286:55a70bb6e35d
Date: 2013-06-26 17:48 +0200
http://bitbucket.org/pypy/stmgc/changeset/55a70bb6e35d/

Log:    Add debugging checks.

diff --git a/c4/dbgmem.c b/c4/dbgmem.c
--- a/c4/dbgmem.c
+++ b/c4/dbgmem.c
@@ -60,6 +60,7 @@
     for (i = 0; i < nb_pages; i++)
         accessible_pages[base + i] = 42;
 
+    dprintf(("stm_malloc(%ld): %p\n", (long)sz, result));
     return result;
 }
 
diff --git a/c4/et.c b/c4/et.c
--- a/c4/et.c
+++ b/c4/et.c
@@ -1177,7 +1177,7 @@
         {
           /* copy the backup copy B back over the now-protected object P,
              and then free B, which will not be used any more. */
-          size_t size = stmcb_size(B);
+          size_t size = stmgc_size(B);
           assert(B->h_tid & GCFLAG_BACKUP_COPY);
           memcpy(((char *)P) + offsetof(struct stm_object_s, h_revision),
                  ((char *)B) + offsetof(struct stm_object_s, h_revision),
diff --git a/c4/gcpage.c b/c4/gcpage.c
--- a/c4/gcpage.c
+++ b/c4/gcpage.c
@@ -155,6 +155,7 @@
         }
         gcp->free_loc_for_size[size_class] = (gcptr)result->h_revision;
         //stm_dbgmem_used_again(result, size_class * WORD, 0);
+        dprintf(("stmgcpage_malloc(%ld): %p\n", (long)size, result));
         return result;
     }
     else {
@@ -168,7 +169,7 @@
 
 void stmgcpage_free(gcptr obj)
 {
-    size_t size = stmcb_size(obj);
+    size_t size = stmgc_size(obj);
     if (size <= GC_SMALL_REQUEST_THRESHOLD) {
         struct tx_public_descriptor *gcp = LOCAL_GCPAGES();
         int size_class = (size + WORD - 1) / WORD;
@@ -272,7 +273,7 @@
 {
     while (gcptrlist_size(&objects_to_trace) > 0) {
         gcptr obj = gcptrlist_pop(&objects_to_trace);
-        stmcb_trace(obj, &visit);
+        stmgc_trace(obj, &visit);
     }
 }
 
diff --git a/c4/nursery.c b/c4/nursery.c
--- a/c4/nursery.c
+++ b/c4/nursery.c
@@ -6,6 +6,18 @@
     return (d->nursery_base <= (char*)obj && ((char*)obj) < d->nursery_end);
 }
 
+size_t stmgc_size(gcptr obj)
+{
+    assert(!(obj->h_tid & GCFLAG_STUB));
+    return stmcb_size(obj);
+}
+
+void stmgc_trace(gcptr obj, void visit(gcptr *))
+{
+    assert(!(obj->h_tid & GCFLAG_STUB));
+    stmcb_trace(obj, visit);
+}
+
 /************************************************************/
 
 void stmgc_init_nursery(void)
@@ -65,7 +77,7 @@
 
 gcptr stmgc_duplicate(gcptr P)
 {
-    size_t size = stmcb_size(P);
+    size_t size = stmgc_size(P);
     gcptr L = (gcptr)allocate_nursery(size, 0);
     if (L == NULL)
         return stmgc_duplicate_old(P);
@@ -79,7 +91,7 @@
 
 gcptr stmgc_duplicate_old(gcptr P)
 {
-    size_t size = stmcb_size(P);
+    size_t size = stmgc_size(P);
     gcptr L = (gcptr)stmgcpage_malloc(size);
     memcpy(L, P, size);
     L->h_tid |= GCFLAG_OLD;
@@ -237,7 +249,7 @@
     assert(!is_in_nursery(thread_descriptor, id));
     assert(id->h_tid & GCFLAG_OLD);
 
-    size_t size = stmcb_size(obj);
+    size_t size = stmgc_size(obj);
     memcpy(id, obj, size);
     id->h_tid &= ~GCFLAG_HAS_ID;
     id->h_tid |= GCFLAG_OLD;
@@ -311,7 +323,7 @@
 
         visit_if_young(&items[i]);
 
-        stmcb_trace((gcptr)items[i]->h_revision, &visit_if_young);
+        stmgc_trace((gcptr)items[i]->h_revision, &visit_if_young);
     }
 
     d->num_private_from_protected_known_old = size;
@@ -428,7 +440,7 @@
         assert(!(obj->h_tid & GCFLAG_WRITE_BARRIER));
         obj->h_tid |= GCFLAG_WRITE_BARRIER;
 
-        stmcb_trace(obj, &visit_if_young);
+        stmgc_trace(obj, &visit_if_young);
     }
 }
 
diff --git a/c4/nursery.h b/c4/nursery.h
--- a/c4/nursery.h
+++ b/c4/nursery.h
@@ -45,5 +45,7 @@
 int stmgc_minor_collect_anything_to_do(struct tx_descriptor *);
 gcptr stmgc_duplicate(gcptr);
 gcptr stmgc_duplicate_old(gcptr);
+size_t stmgc_size(gcptr);
+void stmgc_trace(gcptr, void visit(gcptr *));
 
 #endif
diff --git a/c4/steal.c b/c4/steal.c
--- a/c4/steal.c
+++ b/c4/steal.c
@@ -224,7 +224,7 @@
     sd.foreign_pd = foreign_pd;
     memset(&sd.all_stubs, 0, sizeof(sd.all_stubs));
     steal_data = &sd;
-    stmcb_trace(L, &replace_ptr_to_protected_with_stub);
+    stmgc_trace(L, &replace_ptr_to_protected_with_stub);
     g2l_delete_not_used_any_more(&sd.all_stubs);
 
     /* If another thread (the foreign or a 3rd party) does a read
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to