]> granicus.if.org Git - gc/commitdiff
Remove done_init static variable from fnlz_mlc.c
authorIvan Maidanski <ivmai@mail.ru>
Wed, 29 Nov 2017 22:18:19 +0000 (01:18 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Wed, 29 Nov 2017 22:18:19 +0000 (01:18 +0300)
(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.

fnlz_mlc.c

index fdab21241b9e854aeb429717a6770f36d7e90f3a..f08e5360863dc5563f5054089ad4b64158b90c7c 100644 (file)
@@ -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;