for (; dest >= start; --src, --dest) {
gpointer value = *src;
- *dest = value;
+ SGEN_UPDATE_REFERENCE_ALLOW_NULL (dest, value);
if (need_mod_union || sgen_ptr_in_nursery (value))
sgen_card_table_mark_address ((mword)dest);
sgen_dummy_use (value);
gpointer *end = dest + count;
for (; dest < end; ++src, ++dest) {
gpointer value = *src;
- *dest = value;
+ SGEN_UPDATE_REFERENCE_ALLOW_NULL (dest, value);
if (need_mod_union || sgen_ptr_in_nursery (value))
sgen_card_table_mark_address ((mword)dest);
sgen_dummy_use (value);
}
#if 0
-static void
-collect_faulted_cards (void)
-{
-#define CARD_PAGES (CARD_COUNT_IN_BYTES / 4096)
- int i, count = 0;
- unsigned char faulted [CARD_PAGES] = { 0 };
- mincore (sgen_cardtable, CARD_COUNT_IN_BYTES, faulted);
-
- for (i = 0; i < CARD_PAGES; ++i) {
- if (faulted [i])
- ++count;
- }
-
- printf ("TOTAL card pages %d faulted %d\n", CARD_PAGES, count);
-}
-
void
sgen_card_table_dump_obj_card (char *object, size_t size, void *dummy)
{