From: Ivan Maidanski Date: Tue, 17 Jan 2012 15:44:39 +0000 (+0400) Subject: Add 'const' qualifier to pointer argument of GC_clear/set_mark_bit, X-Git-Tag: gc7_3alpha2~214 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=293d927f27280b8e371384dd530d5df3e8536672;p=gc Add 'const' qualifier to pointer argument of GC_clear/set_mark_bit, GC_finalized_malloc, GC_general_register_disappearing_link * dbg_mlc.c (GC_debug_change_stubborn, GC_debug_end_stubborn_change): Make argument pointer const. * finalize.c (GC_general_register_disappearing_link): Likewise. * fnlz_mlc.c (GC_core_finalized_malloc, GC_finalized_malloc): Likewise. * include/gc.h (GC_change_stubborn, GC_end_stubborn_change, GC_debug_change_stubborn, GC_debug_end_stubborn_change, GC_general_register_disappearing_link): Likewise. * include/gc_disclaim.h (GC_finalized_malloc): Likewise. * include/gc_mark.h (GC_clear_mark_bit, GC_set_mark_bit): Likewise. * mark.c (GC_set_mark_bit, GC_clear_mark_bit): Likewise. * stubborn.c (GC_end_stubborn_change, GC_change_stubborn): Likewise. * finalize.c (GC_general_register_disappearing_link): Remove redundant pointer type casts. * tests/test.c (cons, print_int_list, mktree): Likewise. * include/gc.h (GC_GENERAL_REGISTER_DISAPPEARING_LINK): Add cast removing potential 'const' qualifier. --- diff --git a/dbg_mlc.c b/dbg_mlc.c index eee93a0d..1eb25eb5 100644 --- a/dbg_mlc.c +++ b/dbg_mlc.c @@ -569,9 +569,9 @@ GC_API void * GC_CALL GC_debug_malloc_atomic_ignore_off_page(size_t lb, return (GC_store_debug_info(result, (word)lb, s, i)); } - GC_API void GC_CALL GC_debug_change_stubborn(void *p) + GC_API void GC_CALL GC_debug_change_stubborn(const void *p) { - void * q = GC_base(p); + const void * q = GC_base((void *)p); hdr * hhdr; if (q == 0) { @@ -586,9 +586,9 @@ GC_API void * GC_CALL GC_debug_malloc_atomic_ignore_off_page(size_t lb, GC_change_stubborn(q); } - GC_API void GC_CALL GC_debug_end_stubborn_change(void *p) + GC_API void GC_CALL GC_debug_end_stubborn_change(const void *p) { - void * q = GC_base(p); + const void * q = GC_base((void *)p); hdr * hhdr; if (q == 0) { @@ -610,9 +610,11 @@ GC_API void * GC_CALL GC_debug_malloc_atomic_ignore_off_page(size_t lb, return GC_debug_malloc(lb, OPT_RA s, i); } - GC_API void GC_CALL GC_debug_change_stubborn(void * p GC_ATTR_UNUSED) {} + GC_API void GC_CALL GC_debug_change_stubborn( + const void * p GC_ATTR_UNUSED) {} - GC_API void GC_CALL GC_debug_end_stubborn_change(void * p GC_ATTR_UNUSED) {} + GC_API void GC_CALL GC_debug_end_stubborn_change( + const void * p GC_ATTR_UNUSED) {} #endif /* !STUBBORN_ALLOC */ GC_API void * GC_CALL GC_debug_malloc_atomic(size_t lb, GC_EXTRA_PARAMS) diff --git a/finalize.c b/finalize.c index 2cb1dd26..56f62f1f 100644 --- a/finalize.c +++ b/finalize.c @@ -144,7 +144,7 @@ GC_API int GC_CALL GC_register_disappearing_link(void * * link) } GC_API int GC_CALL GC_general_register_disappearing_link(void * * link, - void * obj) + const void * obj) { struct disappearing_link *curr_dl; size_t index; @@ -154,7 +154,7 @@ GC_API int GC_CALL GC_general_register_disappearing_link(void * * link, if (((word)link & (ALIGNMENT-1)) || link == NULL) ABORT("Bad arg to GC_general_register_disappearing_link"); LOCK(); - GC_ASSERT(obj != NULL && GC_base(obj) == obj); + GC_ASSERT(obj != NULL && GC_base((void *)obj) == obj); if (log_dl_table_size == -1 || GC_dl_entries > ((word)1 << log_dl_table_size)) { GC_grow_table((struct hash_chain_entry ***)(&dl_head), @@ -609,7 +609,7 @@ GC_INNER void GC_finalize(void) } else { dl_set_next(prev_dl, next_dl); } - GC_clear_mark_bit((ptr_t)curr_dl); + GC_clear_mark_bit(curr_dl); GC_dl_entries--; curr_dl = next_dl; } else { @@ -737,7 +737,7 @@ GC_INNER void GC_finalize(void) } else { dl_set_next(prev_dl, next_dl); } - GC_clear_mark_bit((ptr_t)curr_dl); + GC_clear_mark_bit(curr_dl); GC_dl_entries--; curr_dl = next_dl; } else { diff --git a/fnlz_mlc.c b/fnlz_mlc.c index f7fd0db7..4c7a4501 100644 --- a/fnlz_mlc.c +++ b/fnlz_mlc.c @@ -69,10 +69,10 @@ GC_API void GC_CALL GC_init_finalized_malloc(void) #ifdef THREAD_LOCAL_ALLOC STATIC void * GC_core_finalized_malloc(size_t lb, - struct GC_finalizer_closure *fclos) + const struct GC_finalizer_closure *fclos) #else GC_API void * GC_CALL GC_finalized_malloc(size_t lb, - struct GC_finalizer_closure *fclos) + const struct GC_finalizer_closure *fclos) #endif { ptr_t op; @@ -104,7 +104,7 @@ GC_API void GC_CALL GC_init_finalized_malloc(void) #ifdef THREAD_LOCAL_ALLOC GC_API void * GC_CALL GC_finalized_malloc(size_t client_lb, - struct GC_finalizer_closure *fclos) + const struct GC_finalizer_closure *fclos) { size_t lb = client_lb + sizeof(void *); size_t lg = ROUNDED_UP_GRANULES(lb); diff --git a/include/gc.h b/include/gc.h index 10e93afb..6ae6f772 100644 --- a/include/gc.h +++ b/include/gc.h @@ -404,8 +404,8 @@ GC_API void GC_CALL GC_free(void *); /* allowing more than one stubborn object to be changed at once, but it */ /* is acceptable to do so. The same applies to dropping stubborn */ /* objects that are still changeable. */ -GC_API void GC_CALL GC_change_stubborn(void *); -GC_API void GC_CALL GC_end_stubborn_change(void *); +GC_API void GC_CALL GC_change_stubborn(const void *); +GC_API void GC_CALL GC_end_stubborn_change(const void *); /* Return a pointer to the base (lowest address) of an object given */ /* a pointer to a location within the object. */ @@ -684,8 +684,8 @@ GC_API void GC_CALL GC_debug_free(void *); GC_API void * GC_CALL GC_debug_realloc(void * /* old_object */, size_t /* new_size_in_bytes */, GC_EXTRA_PARAMS) /* 'realloc' attr */ GC_ATTR_ALLOC_SIZE(2); -GC_API void GC_CALL GC_debug_change_stubborn(void *); -GC_API void GC_CALL GC_debug_end_stubborn_change(void *); +GC_API void GC_CALL GC_debug_change_stubborn(const void *); +GC_API void GC_CALL GC_debug_end_stubborn_change(const void *); /* Routines that allocate objects with debug information (like the */ /* above), but just fill in dummy file and line number information. */ @@ -741,7 +741,8 @@ GC_API void * GC_CALL GC_debug_realloc_replacement(void * /* object_addr */, # define GC_CHANGE_STUBBORN(p) GC_debug_change_stubborn(p) # define GC_END_STUBBORN_CHANGE(p) GC_debug_end_stubborn_change(p) # define GC_GENERAL_REGISTER_DISAPPEARING_LINK(link, obj) \ - GC_general_register_disappearing_link(link, GC_base(obj)) + GC_general_register_disappearing_link(link, \ + GC_base((/* no const */ void *)(obj))) # define GC_REGISTER_DISPLACEMENT(n) GC_debug_register_displacement(n) #else # define GC_MALLOC_ATOMIC(sz) GC_malloc_atomic(sz) @@ -929,7 +930,7 @@ GC_API int GC_CALL GC_register_disappearing_link(void ** /* link */); /* Only exists for backward compatibility. See below: */ GC_API int GC_CALL GC_general_register_disappearing_link(void ** /* link */, - void * /* obj */); + const void * /* obj */); /* A slight generalization of the above. *link is */ /* cleared when obj first becomes inaccessible. This */ /* can be used to implement weak pointers easily and */ diff --git a/include/gc_disclaim.h b/include/gc_disclaim.h index 2e8013d2..3f0ed6bf 100644 --- a/include/gc_disclaim.h +++ b/include/gc_disclaim.h @@ -51,6 +51,6 @@ struct GC_finalizer_closure { /* efficient than GC_register_finalizer and friends. */ /* GC_init_finalized_malloc must be called before using this. */ GC_API void *GC_CALL GC_finalized_malloc(size_t /*size*/, - struct GC_finalizer_closure * /*fc*/); + const struct GC_finalizer_closure * /*fc*/); #endif diff --git a/include/gc_mark.h b/include/gc_mark.h index e3141cef..e8d7ece4 100644 --- a/include/gc_mark.h +++ b/include/gc_mark.h @@ -222,8 +222,8 @@ GC_API GC_start_callback_proc GC_CALL GC_get_start_callback(void); /* Slow/general mark bit manipulation. The caller must hold the */ /* allocation lock. GC_is_marked returns 1 (TRUE) or 0. */ GC_API int GC_CALL GC_is_marked(const void *); -GC_API void GC_CALL GC_clear_mark_bit(void *); -GC_API void GC_CALL GC_set_mark_bit(void *); +GC_API void GC_CALL GC_clear_mark_bit(const void *); +GC_API void GC_CALL GC_set_mark_bit(const void *); #ifdef __cplusplus } /* end of extern "C" */ diff --git a/mark.c b/mark.c index b2a5d7c6..858cf1fe 100644 --- a/mark.c +++ b/mark.c @@ -190,7 +190,7 @@ static void clear_marks_for_block(struct hblk *h, word dummy GC_ATTR_UNUSED) } /* Slow but general routines for setting/clearing/asking about mark bits */ -GC_API void GC_CALL GC_set_mark_bit(void *p) +GC_API void GC_CALL GC_set_mark_bit(const void *p) { struct hblk *h = HBLKPTR(p); hdr * hhdr = HDR(h); @@ -202,7 +202,7 @@ GC_API void GC_CALL GC_set_mark_bit(void *p) } } -GC_API void GC_CALL GC_clear_mark_bit(void *p) +GC_API void GC_CALL GC_clear_mark_bit(const void *p) { struct hblk *h = HBLKPTR(p); hdr * hhdr = HDR(h); diff --git a/stubborn.c b/stubborn.c index 10863e82..82f11389 100644 --- a/stubborn.c +++ b/stubborn.c @@ -29,12 +29,12 @@ return(GC_malloc(lb)); } - GC_API void GC_CALL GC_end_stubborn_change(void *p) + GC_API void GC_CALL GC_end_stubborn_change(const void *p) { - GC_dirty(p); + GC_dirty((ptr_t)p); } - GC_API void GC_CALL GC_change_stubborn(void *p GC_ATTR_UNUSED) + GC_API void GC_CALL GC_change_stubborn(const void *p GC_ATTR_UNUSED) { } @@ -45,11 +45,11 @@ return(GC_malloc(lb)); } - GC_API void GC_CALL GC_end_stubborn_change(void *p GC_ATTR_UNUSED) + GC_API void GC_CALL GC_end_stubborn_change(const void *p GC_ATTR_UNUSED) { } - GC_API void GC_CALL GC_change_stubborn(void *p GC_ATTR_UNUSED) + GC_API void GC_CALL GC_change_stubborn(const void *p GC_ATTR_UNUSED) { } diff --git a/tests/test.c b/tests/test.c index ca7c6d42..863d0c97 100644 --- a/tests/test.c +++ b/tests/test.c @@ -221,7 +221,7 @@ sexpr cons (sexpr x, sexpr y) } else { extra_count = my_extra; } - GC_END_STUBBORN_CHANGE((char *)r); + GC_END_STUBBORN_CHANGE(r); return(r); } # endif @@ -430,14 +430,14 @@ void print_int_list(sexpr x) /* ditto: */ void check_marks_int_list(sexpr x) { - if (!GC_is_marked((ptr_t)x)) + if (!GC_is_marked(x)) GC_printf("[unm:%p]", (void *)x); else GC_printf("[mkd:%p]", (void *)x); if (is_nil(x)) { GC_printf("NIL\n"); } else { - if (!GC_is_marked((ptr_t)car(x))) + if (!GC_is_marked(car(x))) GC_printf("[unm car:%p]", (void *)car(x)); GC_printf("(%d)", SEXPR_TO_INT(car(car(x)))); if (!is_nil(cdr(x))) { @@ -770,8 +770,7 @@ tn * mktree(int n) } live_indicators[my_index] = 13; if (GC_GENERAL_REGISTER_DISAPPEARING_LINK( - (void * *)(&(live_indicators[my_index])), - (void *)result) != 0) { + (void * *)(&(live_indicators[my_index])), result) != 0) { GC_printf("GC_general_register_disappearing_link failed\n"); FAIL; } @@ -796,8 +795,7 @@ tn * mktree(int n) FAIL; } if (GC_GENERAL_REGISTER_DISAPPEARING_LINK( - (void * *)(&(live_indicators[my_index])), - (void *)result) != 0) { + (void * *)(&(live_indicators[my_index])), result) != 0) { GC_printf("GC_general_register_disappearing_link failed 2\n"); FAIL; }