summaryrefslogtreecommitdiff
path: root/mark.c
diff options
context:
space:
mode:
Diffstat (limited to 'mark.c')
-rw-r--r--mark.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/mark.c b/mark.c
index f706e823..14e6afec 100644
--- a/mark.c
+++ b/mark.c
@@ -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;