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