diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2020-06-21 12:36:32 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2020-06-21 12:36:32 +0300 |
commit | 572b1074a75982dea305427d2e2f6223ef0aa7e3 (patch) | |
tree | 17cfc46c69b753a3aba156a400f53258202a2596 /gcj_mlc.c | |
parent | 7b470c09b16880ada16237bf4e2d23e72dab48ea (diff) | |
download | bdwgc-572b1074a75982dea305427d2e2f6223ef0aa7e3.tar.gz |
Remove GC_gcj_malloc_initialized variable
(code refactoring)
GC_gcjobjfreelist is non-null if GC_init_gcj_malloc() has been called.
* gcj_mlc.c (GC_gcj_malloc_initialized): Remove variable.
* gcj_mlc.c (GC_init_gcj_malloc): Check GC_gcjobjfreelist is non-null
instead of GC_gcj_malloc_initialized.
* thread_local_alloc.c [GC_GCJ_SUPPORT && GC_ASSERTIONS]
(GC_gcj_malloc): Likewise.
* gcj_mlc.c (GC_init_gcj_malloc): Do not set GC_gcj_malloc_initialized.
* include/private/gc_priv.h [GC_GCJ_SUPPORT && GC_ASSERTIONS]
(GC_gcj_malloc_initialized): Remove declaration.
Diffstat (limited to 'gcj_mlc.c')
-rw-r--r-- | gcj_mlc.c | 26 |
1 files changed, 8 insertions, 18 deletions
@@ -39,13 +39,6 @@ #include "gc_gcj.h" #include "private/dbg_mlc.h" -#ifdef GC_ASSERTIONS - GC_INNER /* variable is also used in thread_local_alloc.c */ -#else - STATIC -#endif -GC_bool GC_gcj_malloc_initialized = FALSE; - int GC_gcj_kind = 0; /* Object kind for objects with descriptors */ /* in "vtable". */ int GC_gcj_debug_kind = 0; @@ -77,11 +70,11 @@ GC_API void GC_CALL GC_init_gcj_malloc(int mp_index, GC_init(); /* In case it's not already done. */ LOCK(); - if (GC_gcj_malloc_initialized) { + if (GC_gcjobjfreelist != NULL) { + /* Already initialized. */ UNLOCK(); return; } - GC_gcj_malloc_initialized = TRUE; # ifdef GC_IGNORE_GCJ_INFO /* This is useful for debugging on platforms with missing getenv(). */ # define ignore_gcj_info TRUE @@ -96,30 +89,27 @@ GC_API void GC_CALL GC_init_gcj_malloc(int mp_index, if ((unsigned)mp_index >= GC_n_mark_procs) ABORT("GC_init_gcj_malloc: bad index"); /* Set up object kind gcj-style indirect descriptor. */ - GC_gcjobjfreelist = (ptr_t *)GC_new_free_list_inner(); - if (ignore_gcj_info) { + GC_gcjobjfreelist = (ptr_t *)GC_new_free_list_inner(); + if (ignore_gcj_info) { /* Use a simple length-based descriptor, thus forcing a fully */ /* conservative scan. */ GC_gcj_kind = GC_new_kind_inner((void **)GC_gcjobjfreelist, /* 0 | */ GC_DS_LENGTH, TRUE, TRUE); - } else { + GC_gcj_debug_kind = GC_gcj_kind; + } else { GC_gcj_kind = GC_new_kind_inner( (void **)GC_gcjobjfreelist, (((word)(-(signed_word)MARK_DESCR_OFFSET - GC_INDIR_PER_OBJ_BIAS)) | GC_DS_PER_OBJECT), FALSE, TRUE); - } - /* Set up object kind for objects that require mark proc call. */ - if (ignore_gcj_info) { - GC_gcj_debug_kind = GC_gcj_kind; - } else { + /* Set up object kind for objects that require mark proc call. */ GC_gcj_debug_kind = GC_new_kind_inner(GC_new_free_list_inner(), GC_MAKE_PROC(mp_index, 1 /* allocated with debug info */), FALSE, TRUE); - } + } UNLOCK(); # undef ignore_gcj_info } |