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.)
}
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 ();
/* 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 */
extern unsigned long scm_mtrigger;
#ifdef DEBUG_FREELIST
-extern void scm_debug_newcell (SCM *into);
+extern SCM scm_debug_newcell (void);
#endif
\f
#ifdef DEBUG_FREELIST
-#define SCM_NEWCELL(_into) (scm_debug_newcell (&_into))
+#define SCM_NEWCELL(_into) (_into = scm_debug_newcell ())
#else
#define SCM_NEWCELL(_into) \
{ \