+
+static void*
+do_realloc (void *from, size_t new_size)
+{
+ scm_gc_register_allocation (new_size);
+ return realloc (from, new_size);
+}
+
+static void*
+do_calloc (size_t n, size_t size)
+{
+ scm_gc_register_allocation (size);
+ return calloc (n, size);
+}
+
+static void*
+do_gc_malloc (size_t size, const char *what)
+{
+ /* Ensure nonzero size to be compatible with always-nonzero return of
+ glibc malloc. */
+ return GC_MALLOC (size ? size : sizeof (void *));
+}
+
+static void*
+do_gc_malloc_atomic (size_t size, const char *what)
+{
+ return GC_MALLOC_ATOMIC (size ? size : sizeof (void *));
+}
+
+static void*
+do_gc_realloc (void *from, size_t size, const char *what)
+{
+ return GC_REALLOC (from, size ? size : sizeof (void *));
+}
+
+static void
+do_gc_free (void *ptr)
+{
+ GC_FREE (ptr);
+}
+
+
+\f