From: Ivan Maidanski Date: Wed, 29 Nov 2017 22:18:19 +0000 (+0300) Subject: Remove done_init static variable from fnlz_mlc.c X-Git-Tag: v8.0.0~469 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d27007c5d8fcad61643b6c8725cccdf0bfd7d7d0;p=gc Remove done_init static variable from fnlz_mlc.c (code refactoring) GC_init_finalized_malloc!=0 is used instead of boolean done_init. * fnlz_mlc.c [ENABLE_DISCLAIM] (done_init): Remove static variable. * fnlz_mlc.c [ENABLE_DISCLAIM] (GC_init_finalized_malloc, GC_finalized_malloc): Use GC_finalized_kind instead of done_init. * fnlz_mlc.c [ENABLE_DISCLAIM] (GC_init_finalized_malloc): Add assertion that the result of GC_new_kind_inner() is non-zero. --- diff --git a/fnlz_mlc.c b/fnlz_mlc.c index fdab2124..f08e5360 100644 --- a/fnlz_mlc.c +++ b/fnlz_mlc.c @@ -48,19 +48,16 @@ STATIC int GC_CALLBACK GC_finalized_disclaim(void *obj) 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 */ @@ -71,6 +68,7 @@ GC_API void GC_CALL GC_init_finalized_malloc(void) 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(); } @@ -88,7 +86,7 @@ GC_API GC_ATTR_MALLOC void * GC_CALL GC_finalized_malloc(size_t lb, { 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;