From bf71d2a8af1c41d27e5590a63ce4ab19e8c7328c Mon Sep 17 00:00:00 2001 From: Kevin Tew Date: Wed, 3 Mar 2010 21:42:14 +0000 Subject: [PATCH] refactored gc marked to clearly show fallthrough svn: r18454 --- src/mzscheme/gc2/newgc.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/mzscheme/gc2/newgc.c b/src/mzscheme/gc2/newgc.c index bf8bbac889..1a3792e2ef 100644 --- a/src/mzscheme/gc2/newgc.c +++ b/src/mzscheme/gc2/newgc.c @@ -1192,15 +1192,23 @@ inline static int marked(NewGC *gc, void *p) if(!p) return 0; if(!(page = pagemap_find_page(gc->page_maps, p))) return 1; - if (page->size_class) { - if (page->size_class > 1) { - return (page->size_class > 2); - } - } else if (page->generation) { - if((NUM(page->addr) + page->previous_size) > NUM(p)) + switch(page->size_class) { + case SIZE_CLASS_BIG_PAGE_MARKED: return 1; + case SIZE_CLASS_SMALL_PAGE: + if (page->generation) { + if((NUM(page->addr) + page->previous_size) > NUM(p)) + return 1; + } + /* else FALLTHROUGH */ + case SIZE_CLASS_MED_PAGE: /* FALLTHROUGH */ + case SIZE_CLASS_BIG_PAGE: + return OBJPTR_TO_OBJHEAD(p)->mark; + break; + default: + fprintf(stderr, "ABORTING! INVALID SIZE_CLASS %i\n", page->size_class); + exit(EXIT_FAILURE); } - return OBJPTR_TO_OBJHEAD(p)->mark; } /*****************************************************************************/