]> granicus.if.org Git - gc/commitdiff
Make GC callbacks members of NewGC
authorKevin Tew <tewk@racket-lang.org>
Thu, 20 Nov 2008 23:36:54 +0000 (23:36 +0000)
committerIvan Maidanski <ivmai@mail.ru>
Sun, 3 Nov 2013 09:08:58 +0000 (13:08 +0400)
svn: r12549

alloc.c
include/gc.h

diff --git a/alloc.c b/alloc.c
index 75db270553ebdc3a3ed4fe5fe2d7368d89351c3f..1ef473e1ffb9bc2e6b6c4bfdaff9a37b8b1e8a59 100644 (file)
--- 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.
index dc61c1434ad6addc1a0b12c45b58ababb8c8b2f4..3c482034a3774ee940c861e85e8b54126ffad701 100644 (file)
@@ -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);