Author: Armin Rigo <[email protected]>
Branch: card-marking
Changeset: r1263:bde7c7634878
Date: 2014-06-30 12:56 +0200
http://bitbucket.org/pypy/stmgc/changeset/bde7c7634878/

Log:    Pass only one pointer argument (actually an array) to
        stmcb_get_card_base_itemsize().

diff --git a/c7/demo/demo2.c b/c7/demo/demo2.c
--- a/c7/demo/demo2.c
+++ b/c7/demo/demo2.c
@@ -43,8 +43,8 @@
     n = (struct node_s*)obj;
     visit((object_t **)&n->next);
 }
-void stmcb_get_card_base_itemsize(
-    struct object_s *obj, uintptr_t *base_offset, ssize_t *item_size)
+void stmcb_get_card_base_itemsize(struct object_s *obj,
+                                  uintptr_t offset_itemsize[2])
 {
     abort();
 }
diff --git a/c7/stm/core.c b/c7/stm/core.c
--- a/c7/stm/core.c
+++ b/c7/stm/core.c
@@ -584,8 +584,7 @@
     /* Combine multiple marked cards and do a memcpy for them. We don't
        try yet to use page_copy() or otherwise take into account privatization
        of pages (except _has_private_page_in_range) */
-    uintptr_t base_offset;
-    ssize_t item_size;
+    uintptr_t offset_itemsize[2];
     bool all_cards_were_cleared = true;
 
     uintptr_t start_card_index = -1;
@@ -602,8 +601,7 @@
                 /*     realobj, get_card_index_to_index(card_index)); */
                 if (all_cards_were_cleared) {
                     all_cards_were_cleared = false;
-                    stmcb_get_card_base_itemsize(realobj, &base_offset,
-                                                 &item_size);
+                    stmcb_get_card_base_itemsize(realobj, offset_itemsize);
                 }
             }
         }
@@ -626,11 +624,11 @@
                 next_card_index++;
             }
 
-            start_card_offset = base_offset +
-                get_card_index_to_index(start_card_index) * item_size;
+            start_card_offset = offset_itemsize[0] +
+                get_card_index_to_index(start_card_index) * offset_itemsize[1];
 
-            next_card_offset = base_offset +
-                get_card_index_to_index(next_card_index) * item_size;
+            next_card_offset = offset_itemsize[0] +
+                get_card_index_to_index(next_card_index) * offset_itemsize[1];
 
             if (next_card_offset > obj_size)
                 next_card_offset = obj_size;
diff --git a/c7/stmgc.h b/c7/stmgc.h
--- a/c7/stmgc.h
+++ b/c7/stmgc.h
@@ -253,8 +253,8 @@
    It returns the base_offset (in bytes) inside the object from
    where the indices start, and item_size (in bytes) for the size of
    one item */
-extern void stmcb_get_card_base_itemsize(
-    struct object_s *, uintptr_t *base_offset, ssize_t *item_size);
+extern void stmcb_get_card_base_itemsize(struct object_s *,
+                                         uintptr_t offset_itemsize[2]);
 extern void stmcb_commit_soon(void);
 
 
diff --git a/c7/test/support.py b/c7/test/support.py
--- a/c7/test/support.py
+++ b/c7/test/support.py
@@ -316,17 +316,17 @@
     }
 }
 
-void stmcb_get_card_base_itemsize(
-    struct object_s *obj, uintptr_t *base_offset, ssize_t *item_size)
+void stmcb_get_card_base_itemsize(struct object_s *obj,
+                                  uintptr_t offset_itemsize[2])
 {
     struct myobj_s *myobj = (struct myobj_s*)obj;
     if (myobj->type_id < 421420) {
-        *base_offset = SIZEOF_MYOBJ;
-        *item_size = 1;
+        offset_itemsize[0] = SIZEOF_MYOBJ;
+        offset_itemsize[1] = 1;
     }
     else {
-        *base_offset = sizeof(struct myobj_s);
-        *item_size = sizeof(object_t *);
+        offset_itemsize[0] = sizeof(struct myobj_s);
+        offset_itemsize[1] = sizeof(object_t *);
     }
 }
 
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to