diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2017-11-30 01:18:19 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2017-11-30 01:18:19 +0300 |
commit | d27007c5d8fcad61643b6c8725cccdf0bfd7d7d0 (patch) | |
tree | 12e214875902431fcded8bf5c75cc6848430d4c4 /fnlz_mlc.c | |
parent | 218bfbfa67e665897b57259b367a8ded16a2c095 (diff) | |
download | bdwgc-d27007c5d8fcad61643b6c8725cccdf0bfd7d7d0.tar.gz |
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.
Diffstat (limited to 'fnlz_mlc.c')
-rw-r--r-- | fnlz_mlc.c | 8 |
1 files changed, 3 insertions, 5 deletions
@@ -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; |