gc: new cell_nil: nice
This commit is contained in:
parent
f20e50f971
commit
431f3e610f
15
src/gc.c
15
src/gc.c
|
@ -577,25 +577,26 @@ gc_ ()
|
||||||
gc_up_arena ();
|
gc_up_arena ();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if POINTER_CELLS
|
SCM new_cell_nil = g_free;
|
||||||
SCM save_gfree = g_free;
|
|
||||||
#endif
|
|
||||||
SCM s;
|
SCM s;
|
||||||
for (s = cell_nil; s < g_symbol_max; s = s + M2_CELL_SIZE)
|
for (s = cell_nil; s < g_symbol_max; s = s + M2_CELL_SIZE)
|
||||||
gc_copy (s);
|
gc_copy (s);
|
||||||
|
|
||||||
#if POINTER_CELLS
|
#if POINTER_CELLS
|
||||||
|
cell_nil = new_cell_nil;
|
||||||
|
|
||||||
#if GC_TEST
|
#if GC_TEST
|
||||||
cell_nil = save_gfree;
|
cell_zero = cell_nil - M2_CELL_SIZE;
|
||||||
|
g_symbol_max = g_free;
|
||||||
#else
|
#else
|
||||||
long save_gsymbols = g_symbols;
|
long save_gsymbols = g_symbols;
|
||||||
cell_nil = save_gfree;
|
|
||||||
g_symbols = 0;
|
g_symbols = 0;
|
||||||
g_free = save_gfree;
|
g_free = new_cell_nil;
|
||||||
init_symbols_ ();
|
init_symbols_ ();
|
||||||
g_symbol_max = g_symbol;
|
g_symbol_max = g_symbol;
|
||||||
g_symbols = save_gsymbols;
|
g_symbols = save_gsymbols;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
g_symbols = gc_copy (g_symbols);
|
g_symbols = gc_copy (g_symbols);
|
||||||
|
@ -606,7 +607,7 @@ gc_ ()
|
||||||
for (i = g_stack; i < STACK_SIZE; i = i + 1)
|
for (i = g_stack; i < STACK_SIZE; i = i + 1)
|
||||||
copy_stack (i, gc_copy (g_stack_array[i]));
|
copy_stack (i, gc_copy (g_stack_array[i]));
|
||||||
|
|
||||||
gc_loop (cell_nil);
|
gc_loop (new_cell_nil);
|
||||||
}
|
}
|
||||||
|
|
||||||
SCM
|
SCM
|
||||||
|
|
Loading…
Reference in New Issue