diff --git a/src/racket/gc2/newgc.c b/src/racket/gc2/newgc.c index fd237602b5..c4a331c368 100644 --- a/src/racket/gc2/newgc.c +++ b/src/racket/gc2/newgc.c @@ -1946,8 +1946,6 @@ static void wait_if_master_in_progress(NewGC *gc) { } } if (last_one_here) { - int i = 0; - int maxid = MASTERGCINFO->next_GC_id; NewGC *saved_gc; GC_LOCK_DEBUG("UNMGCLOCK GC_switch_to_master_gc\n"); @@ -1967,9 +1965,13 @@ static void wait_if_master_in_progress(NewGC *gc) { GCVERBOSEprintf("END MASTER COLLECTION\n"); #endif - /* wake everyone back up */ - for (i=2; i < maxid; i++) { - mzrt_sema_post(MASTERGCINFO->wait_sema); + { + int i = 0; + int maxid = MASTERGCINFO->next_GC_id; + /* wake everyone back up */ + for (i=2; i < maxid; i++) { + mzrt_sema_post(MASTERGCINFO->wait_sema); + } } } GC_switch_back_from_master(saved_gc); @@ -2258,7 +2260,9 @@ void GC_mark2(const void *const_p, struct NewGC *gc) #endif } + /* MED OR BIG PAGE */ if(page->size_class) { + /* BIG PAGE */ if(page->size_class > 1) { /* This is a bigpage. The first thing we do is see if its been marked previously */ @@ -2315,7 +2319,9 @@ void GC_mark2(const void *const_p, struct NewGC *gc) record_backtrace(page, p); push_ptr(gc, p); } - } else { + } + /* SMALL_PAGE from gen0 or gen1 */ + else { objhead *ohead = OBJPTR_TO_OBJHEAD(p); if(ohead->mark) { diff --git a/src/racket/gc2/newgc.h b/src/racket/gc2/newgc.h index 6584d82ba2..bdacfe71b8 100644 --- a/src/racket/gc2/newgc.h +++ b/src/racket/gc2/newgc.h @@ -17,7 +17,7 @@ typedef struct mpage { unsigned char mprotected :1; */ unsigned char back_pointers ; - unsigned char size_class ; /* 1 => med; 2 => big; 3 => big marked */ + unsigned char size_class ; /* 0 => small; 1 => med; 2 => big; 3 => big marked */ unsigned char page_type ; unsigned char marked_on ; unsigned char has_new ;