diff options
author | ivmai <ivmai> | 2011-04-07 20:35:46 +0000 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2011-07-26 21:06:57 +0400 |
commit | be457cfd5dde0cc1a1db497a70c15b7bd38153b8 (patch) | |
tree | 3a5446226dc138c7113e857a219cd971fc24cea0 /dbg_mlc.c | |
parent | 1348d9d446428a3afc8900881b61ed7bbdffe5f5 (diff) | |
download | bdwgc-be457cfd5dde0cc1a1db497a70c15b7bd38153b8.tar.gz |
2011-04-07 Ivan Maidanski <ivmai@mail.ru>
* alloc.c (GC_check_heap, GC_print_all_smashed): Move the
definition from misc.c.
* dbg_mlc.c (GC_debug_malloc_atomic_uncollectable): Define as
public.
* include/gc.h (GC_debug_malloc_atomic_uncollectable): Declare.
* include/gc.h (GC_MALLOC_ATOMIC_UNCOLLECTABLE): Define new public
macro.
* dbg_mlc.c (MAX_SMASHED): Don't define if already set.
* reclaim.c (MAX_LEAKED): Ditto.
* dbg_mlc.c (GC_add_smashed): Add FIXME about the concurrent
access to the global array.
* reclaim.c (GC_add_leaked): Ditto.
* misc.c (GC_print_back_height): Set on if GC_PRINT_BACK_HEIGHT
(new macro) is defined.
* doc/README.macros (GC_PRINT_BACK_HEIGHT): Document.
* misc.c (GC_dump_regularly, GC_init): Replace 0/1 for
GC_dump_regularly and GC_print_back_height variables with
FALSE/TRUE.
* reclaim.c (GC_print_all_errors): Refine the comment.
Diffstat (limited to 'dbg_mlc.c')
-rw-r--r-- | dbg_mlc.c | 43 |
1 files changed, 23 insertions, 20 deletions
@@ -571,11 +571,11 @@ GC_API void * GC_CALL GC_debug_malloc_atomic_ignore_off_page(size_t lb, ADD_CALL_CHAIN(result, GC_RETURN_ADDR); return (GC_store_debug_info_inner(result, (word)lb, "INTERNAL", (word)0)); } -#endif +#endif /* DBG_HDRS_ALL */ #ifdef STUBBORN_ALLOC -GC_API void * GC_CALL GC_debug_malloc_stubborn(size_t lb, GC_EXTRA_PARAMS) -{ + GC_API void * GC_CALL GC_debug_malloc_stubborn(size_t lb, GC_EXTRA_PARAMS) + { void * result = GC_malloc_stubborn(lb + DEBUG_BYTES); if (result == 0) { @@ -590,10 +590,10 @@ GC_API void * GC_CALL GC_debug_malloc_stubborn(size_t lb, GC_EXTRA_PARAMS) } ADD_CALL_CHAIN(result, ra); return (GC_store_debug_info(result, (word)lb, s, (word)i)); -} + } -GC_API void GC_CALL GC_debug_change_stubborn(void *p) -{ + GC_API void GC_CALL GC_debug_change_stubborn(void *p) + { void * q = GC_base(p); hdr * hhdr; @@ -607,10 +607,10 @@ GC_API void GC_CALL GC_debug_change_stubborn(void *p) ABORT("GC_debug_change_stubborn: arg not stubborn"); } 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(void *p) + { void * q = GC_base(p); hdr * hhdr; @@ -624,21 +624,20 @@ GC_API void GC_CALL GC_debug_end_stubborn_change(void *p) ABORT("GC_debug_end_stubborn_change: arg not stubborn"); } GC_end_stubborn_change(q); -} + } #else /* !STUBBORN_ALLOC */ -GC_API void * GC_CALL GC_debug_malloc_stubborn(size_t lb, GC_EXTRA_PARAMS) -{ + GC_API void * GC_CALL GC_debug_malloc_stubborn(size_t lb, GC_EXTRA_PARAMS) + { return GC_debug_malloc(lb, OPT_RA s, i); -} - -/*ARGSUSED*/ -GC_API void GC_CALL GC_debug_change_stubborn(void *p) {} + } -/*ARGSUSED*/ -GC_API void GC_CALL GC_debug_end_stubborn_change(void *p) {} + /*ARGSUSED*/ + GC_API void GC_CALL GC_debug_change_stubborn(void *p) {} + /*ARGSUSED*/ + GC_API void GC_CALL GC_debug_end_stubborn_change(void *p) {} #endif /* !STUBBORN_ALLOC */ GC_API void * GC_CALL GC_debug_malloc_atomic(size_t lb, GC_EXTRA_PARAMS) @@ -742,7 +741,8 @@ GC_API void * GC_CALL GC_debug_malloc_uncollectable(size_t lb, } #ifdef ATOMIC_UNCOLLECTABLE - void * GC_debug_malloc_atomic_uncollectable(size_t lb, GC_EXTRA_PARAMS) + GC_API void * GC_CALL GC_debug_malloc_atomic_uncollectable(size_t lb, + GC_EXTRA_PARAMS) { void * result = GC_malloc_atomic_uncollectable(lb + UNCOLLECTABLE_DEBUG_BYTES); @@ -913,13 +913,16 @@ GC_API void * GC_CALL GC_debug_realloc(void * p, size_t lb, GC_EXTRA_PARAMS) /* always print them nicely with the allocation lock held. */ /* We put them here instead of in GC_arrays, since it may be useful to */ /* be able to look at them with the debugger. */ -#define MAX_SMASHED 20 +#ifndef MAX_SMASHED +# define MAX_SMASHED 20 +#endif STATIC ptr_t GC_smashed[MAX_SMASHED] = {0}; STATIC unsigned GC_n_smashed = 0; STATIC void GC_add_smashed(ptr_t smashed) { GC_ASSERT(GC_is_marked(GC_base(smashed))); + /* FIXME: Prevent adding an object while printing smashed list. */ GC_smashed[GC_n_smashed] = smashed; if (GC_n_smashed < MAX_SMASHED - 1) ++GC_n_smashed; /* In case of overflow, we keep the first MAX_SMASHED-1 */ |