From: Kevin Tew Date: Thu, 20 Nov 2008 23:36:54 +0000 (+0000) Subject: Make GC callbacks members of NewGC X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1f95330bcf5229e77a2a105f5cb815f4e3e6c59d;p=gc Make GC callbacks members of NewGC svn: r12549 --- diff --git a/alloc.c b/alloc.c index 75db2705..1ef473e1 100644 --- a/alloc.c +++ b/alloc.c @@ -320,8 +320,20 @@ void GC_maybe_gc() } /* PLTSCHEME: notification callback for starting/ending a GC */ -void (*GC_collect_start_callback)(void) = NULL; -void (*GC_collect_end_callback)(void) = NULL; +GC_collect_start_callback_Proc GC_collect_start_callback = NULL; +GC_collect_end_callback_Proc GC_collect_end_callback = NULL; +GC_collect_start_callback_Proc GC_set_collect_start_callback(GC_collect_start_callback_Proc func) { + GC_collect_start_callback_Proc old; + old = GC_collect_start_callback; + GC_collect_start_callback = func; + return old; +} +GC_collect_end_callback_Proc GC_set_collect_end_callback(GC_collect_end_callback_Proc func) { + GC_collect_end_callback_Proc old; + old = GC_collect_end_callback; + GC_collect_end_callback = func; + return old; +} /* * Stop the world garbage collection. Assumes lock held, signals disabled. diff --git a/include/gc.h b/include/gc.h index dc61c143..3c482034 100644 --- a/include/gc.h +++ b/include/gc.h @@ -1017,13 +1017,15 @@ extern void GC_thr_init GC_PROTO((void));/* Needed for Solaris/X86 */ #if defined(GC_REDIRECT_TO_LOCAL) && !defined(GC_LOCAL_ALLOC_H) # include "gc_local_alloc.h" #endif +typedef void (*GC_collect_start_callback_Proc)(void); +typedef void (*GC_collect_end_callback_Proc)(void); /* PLTSCHEME: */ GC_API void (*GC_custom_finalize)(void); GC_API void (*GC_push_last_roots)(void); GC_API void (*GC_push_last_roots_again)(void); -GC_API void (*GC_collect_start_callback)(void); -GC_API void (*GC_collect_end_callback)(void); +GC_API GC_collect_start_callback_Proc GC_set_collect_start_callback(GC_collect_start_callback_Proc); +GC_API GC_collect_end_callback_Proc GC_set_collect_end_callback(GC_collect_end_callback_Proc); GC_API void (*GC_out_of_memory)(void); GC_API int GC_did_mark_stack_overflow(void); GC_API void GC_mark_from_mark_stack(void);