From: Camm Maguire Date: Mon, 30 Dec 2019 15:46:22 +0000 (+0000) Subject: list_order.8 X-Git-Tag: archive/raspbian/2.6.12-92+rpi1^2~54 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=447dd3ff039a1e82481ccc407453bcf0810a494c;p=gcl.git list_order.8 Gbp-Pq: Name list_order.8 --- diff --git a/o/gbc.c b/o/gbc.c index b5b0c09b..8dbd724d 100755 --- a/o/gbc.c +++ b/o/gbc.c @@ -966,6 +966,11 @@ sweep_phase(void) { STATIC object f; STATIC struct pageinfo *v; + for (j= t_start; j < t_contiguous ; j++) { + tm_of(j)->tm_free=OBJNULL; + tm_of(j)->tm_nfree=0; + } + for (v=cell_list_head;v;v=v->next) { tm = tm_of((enum type)v->type); @@ -975,22 +980,23 @@ sweep_phase(void) { k = 0; for (j = tm->tm_nppage; j > 0; --j, p += tm->tm_size) { x = (object)p; - if (is_free(x)) - continue; - else if (is_marked(x)) { + + if (is_marked(x)) { unmark(x); continue; } - SET_LINK(f,x); make_free(x); + SET_LINK(f,x); f = x; k++; + } + SET_LINK(f,OBJNULL); tm->tm_tail = f; tm->tm_nfree += k; - pagetoinfo(page(v))->in_use-=k; + pagetoinfo(page(v))->in_use=tm->tm_nppage-k; } diff --git a/o/sgbc.c b/o/sgbc.c index 291fe673..b59a5cc1 100755 --- a/o/sgbc.c +++ b/o/sgbc.c @@ -873,6 +873,7 @@ sgc_quit(void) { } SET_LINK(f,n!=OBJNULL ? n : o); tm->tm_tail=f; + for (;OBJ_LINK(tm->tm_tail)!=OBJNULL;tm->tm_tail=OBJ_LINK(tm->tm_tail)); tm->tm_nfree += tm->tm_alt_nfree; tm->tm_alt_nfree = 0; tm->tm_alt_free = OBJNULL;