diff options
Diffstat (limited to 'mark.c')
-rw-r--r-- | mark.c | 19 |
1 files changed, 12 insertions, 7 deletions
@@ -51,21 +51,26 @@ GC_INNER unsigned GC_n_mark_procs = GC_RESERVED_MARK_PROCS; /* It's done here, since we need to deal with mark descriptors. */ GC_INNER struct obj_kind GC_obj_kinds[MAXOBJKINDS] = { /* PTRFREE */ { &GC_aobjfreelist[0], 0 /* filled in dynamically */, - 0 | GC_DS_LENGTH, FALSE, FALSE }, + 0 | GC_DS_LENGTH, FALSE, FALSE, + OK_DISCLAIM_INITZ }, /* NORMAL */ { &GC_objfreelist[0], 0, 0 | GC_DS_LENGTH, /* Adjusted in GC_init for EXTRA_BYTES */ - TRUE /* add length to descr */, TRUE }, + TRUE /* add length to descr */, TRUE, + OK_DISCLAIM_INITZ }, /* UNCOLLECTABLE */ { &GC_uobjfreelist[0], 0, - 0 | GC_DS_LENGTH, TRUE /* add length to descr */, TRUE }, + 0 | GC_DS_LENGTH, TRUE /* add length to descr */, TRUE, + OK_DISCLAIM_INITZ }, # ifdef ATOMIC_UNCOLLECTABLE /* AUNCOLLECTABLE */ { &GC_auobjfreelist[0], 0, - 0 | GC_DS_LENGTH, FALSE /* add length to descr */, FALSE }, + 0 | GC_DS_LENGTH, FALSE /* add length to descr */, FALSE, + OK_DISCLAIM_INITZ }, # endif # ifdef STUBBORN_ALLOC /*STUBBORN*/ { (void **)&GC_sobjfreelist[0], 0, - 0 | GC_DS_LENGTH, TRUE /* add length to descr */, TRUE }, + 0 | GC_DS_LENGTH, TRUE /* add length to descr */, TRUE, + OK_DISCLAIM_INITZ }, # endif }; @@ -1771,8 +1776,8 @@ STATIC void GC_push_marked(struct hblk *h, hdr *hhdr) /* first word. */ void GC_push_unconditionally(struct hblk *h, hdr *hhdr) { - int sz = hhdr -> hb_sz; - int descr = hhdr -> hb_descr; + size_t sz = hhdr -> hb_sz; + word descr = hhdr -> hb_descr; ptr_t p; ptr_t lim; mse * GC_mark_stack_top_reg; |