g_cells = g_news;
g_news = cells;
#if _POSIX_SOURCE
- if (g_debug) fprintf (stderr, " => jam[%d]\n", g_free);
+ if (g_debug) fprintf (stderr, ";;; => jam[%d]\n", g_free);
#else
if (g_debug)
{
- eputs (" => jam[");
+ eputs (";;; => jam[");
eputs (itoa (g_free));
eputs ("]\n");
}
{
if (TYPE (old) == TBROKEN_HEART) return g_cells[old].car;
SCM new = g_free++;
-#if 0
g_news[new] = g_cells[old];
-#else
- SCM y = new;
- SCM z = old;
- SCM zz = TYPE (z);
- NTYPE (y) = zz;
- zz = CAR (z);
- NCAR (y) = zz;
- zz = CDR (z);
- NCDR (y) = zz;
-#endif
if (NTYPE (new) == TVECTOR)
{
NVECTOR (new) = g_free;
for (int i=0; i<LENGTH (old); i++)
-#if 0
- //__GNUC__
+#if __GNUC__
g_news[g_free++] = g_cells[VECTOR (old)+i];
#else
{
- //eputs ("gc_copy\n");
- y = g_free;
- g_free++;
- z = VECTOR (old);
- z = z + i;
- //z = g_cells[z];
- zz = TYPE (z);
- NTYPE (y) = zz;
- zz = CAR (z);
- NCAR (y) = zz;
- zz = CDR (z);
- NCDR (y) = zz;
+ SCM b = VECTOR (old)+i;
+ g_news[g_free++] = g_cells[b];
}
#endif
}
gc ()
{
#if _POSIX_SOURCE
- if (g_debug) fprintf (stderr, "***gc[%d]...", g_free);
+ if (g_debug) fprintf (stderr, ";;; gc[%d:%d]...", g_free, ARENA_SIZE - g_free);
#else
if (g_debug)
{
- eputs ("***gc[");
+ eputs (";;; gc[");
eputs (itoa (g_free));
+ eputs (":");
+ eputs (itoa (ARENA_SIZE - g_free));
eputs ("]...");
}
#endif