return 0;
}
-static GC_bool done_init = FALSE;
-
GC_API void GC_CALL GC_init_finalized_malloc(void)
{
DCL_LOCK_STATE;
GC_init(); /* In case it's not already done. */
LOCK();
- if (done_init) {
+ if (GC_finalized_kind != 0) {
UNLOCK();
return;
}
- done_init = TRUE;
/* The finalizer closure is placed in the first word in order to */
/* use the lower bits to distinguish live objects from objects on */
GC_finalized_kind = GC_new_kind_inner(GC_new_free_list_inner(),
GC_DS_LENGTH, TRUE, TRUE);
+ GC_ASSERT(GC_finalized_kind != 0);
GC_register_disclaim_proc(GC_finalized_kind, GC_finalized_disclaim, TRUE);
UNLOCK();
}
{
word *op;
- GC_ASSERT(done_init);
+ GC_ASSERT(GC_finalized_kind != 0);
op = GC_malloc_kind(SIZET_SAT_ADD(lb, sizeof(word)), GC_finalized_kind);
if (EXPECT(NULL == op, FALSE))
return NULL;