From 1f95330bcf5229e77a2a105f5cb815f4e3e6c59d Mon Sep 17 00:00:00 2001 From: Kevin Tew Date: Thu, 20 Nov 2008 23:36:54 +0000 Subject: [PATCH] Make GC callbacks members of NewGC svn: r12549 --- alloc.c | 16 ++++++++++++++-- include/gc.h | 6 ++++-- 2 files changed, 18 insertions(+), 4 deletions(-) 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); -- 2.50.1