* pairs.h (SCM_NEWCELL): When DEBUG_FREELIST is defined, don't
authorJim Blandy <jimb@red-bean.com>
Sat, 5 Dec 1998 18:52:15 +0000 (18:52 +0000)
committerJim Blandy <jimb@red-bean.com>
Sat, 5 Dec 1998 18:52:15 +0000 (18:52 +0000)
take the address of _into; it might be a register.  Just have
scm_debug_newcell return the new cell.
* gc.c (scm_debug_newcell): Just return the new cell, instead of
taking the address of a place to store it as an argument.
* gc.h (scm_debug_newcell): Change declaration.
(Thanks to Greg Harvey.)

libguile/gc.c
libguile/gc.h
libguile/pairs.h

index 2ae1abb..d2e379b 100644 (file)
@@ -291,9 +291,11 @@ scm_check_freelist ()
 }
 
 static int scm_debug_check_freelist = 0;
-void
-scm_debug_newcell (SCM *into)
+SCM
+scm_debug_newcell (void)
 {
+  SCM new;
+
   scm_newcell_count++;
   if (scm_debug_check_freelist)
     scm_check_freelist ();
@@ -301,13 +303,15 @@ scm_debug_newcell (SCM *into)
   /* The rest of this is supposed to be identical to the SCM_NEWCELL
      macro.  */
   if (SCM_IMP (scm_freelist))
-    *into = scm_gc_for_newcell ();
+    new = scm_gc_for_newcell ();
   else
     {
-      *into = scm_freelist;
+      new = scm_freelist;
       scm_freelist = SCM_CDR (scm_freelist);
       ++scm_cells_allocated;
     }
+
+  return new;
 }
 
 #endif /* DEBUG_FREELIST */
index 9de5817..709227d 100644 (file)
@@ -69,7 +69,7 @@ extern unsigned long scm_mallocated;
 extern unsigned long scm_mtrigger;
 
 #ifdef DEBUG_FREELIST
-extern void scm_debug_newcell (SCM *into);
+extern SCM scm_debug_newcell (void);
 #endif
 
 \f
index e3e6355..3b56610 100644 (file)
@@ -145,7 +145,7 @@ typedef SCM  huge *SCMPTR;
 
 
 #ifdef DEBUG_FREELIST
-#define SCM_NEWCELL(_into) (scm_debug_newcell (&_into))
+#define SCM_NEWCELL(_into) (_into = scm_debug_newcell ())
 #else
 #define SCM_NEWCELL(_into) \
        { \