--- cvsroot/microscheme/scheme.c 2015/11/30 06:49:11 1.44 +++ cvsroot/microscheme/scheme.c 2015/11/30 07:44:23 1.45 @@ -971,7 +971,7 @@ if (SCHEME_V->free_cell == NIL) { - const int min_to_be_recovered = SCHEME_V->last_cell_seg < 128 ? 128 * 8 : SCHEME_V->last_cell_seg * 8; + const int min_to_be_recovered = SCHEME_V->cell_segsize [SCHEME_V->last_cell_seg] >> 2; gc (SCHEME_A_ a, b); @@ -1032,7 +1032,7 @@ static pointer get_vector_object (SCHEME_P_ uint32_t len, pointer init) { - pointer v = get_cell_x (SCHEME_A_ 0, 0); + pointer v = get_cell_x (SCHEME_A_ NIL, NIL); pointer *e = malloc (len * sizeof (pointer)); if (!e && USE_ERROR_CHECKING) @@ -1658,6 +1658,9 @@ SCHEME_V->fcells = 0; SCHEME_V->free_cell = NIL; + if (SCHEME_V->gc_verbose) + xwrstr ("freeing..."); + uint32_t total = 0; /* Here we scan the cells to build the free-list. */