From c56fb66fa055531d0030a1a2cabd57484cf02855 Mon Sep 17 00:00:00 2001 From: Kevin Tew Date: Mon, 26 Apr 2010 14:24:15 -0600 Subject: [PATCH] add page to killing debug --- src/racket/gc2/newgc.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/racket/gc2/newgc.c b/src/racket/gc2/newgc.c index 50b1a20d0d..dee0bd431a 100644 --- a/src/racket/gc2/newgc.c +++ b/src/racket/gc2/newgc.c @@ -146,11 +146,11 @@ static void GCVERBOSEprintf(const char *fmt, ...) { static void GCVERBOSEPAGE(const char *msg, mpage* page) { NewGC *gc = GC_get_GC(); if(postmaster_and_master_gc(gc)) { - GCVERBOSEprintf("%s %p %p %p\n", msg, page, page->addr, (void*)((long)page->addr + real_page_size(page))); + GCVERBOSEprintf("%s %p: %p %p %p\n", msg, gc, page, page->addr, (void*)((long)page->addr + real_page_size(page))); } } # ifdef KILLING_DEBUG -static void killing_debug(NewGC *gc, void *info); +static void killing_debug(NewGC *gc, mpage *page, objhead *info); # endif #else # define GCVERBOSEPAGE(msg, page) /* EMPTY */ @@ -2345,8 +2345,10 @@ void GC_mark2(const void *const_p, struct NewGC *gc) page->live_size += ohead->size; record_backtrace(page, p); push_ptr(gc, p); - } else GCDEBUG((DEBUGOUTF, "Not marking %p (it's old; %p / %i)\n", - p, page, page->previous_size)); + } + else { + GCDEBUG((DEBUGOUTF, "Not marking %p (it's old; %p / %i)\n", p, page, page->previous_size)); + } } else { /* this is a generation 0 object. This means that we do have to do all of the above. Fun, fun, fun. */ @@ -3073,10 +3075,10 @@ static void fprintf_buffer(FILE* file, char* buf, int l) { fprintf(file, "\n"); } -static void fprintf_debug(NewGC *gc, const char *msg, objhead *info, FILE* file, int isgc) { +static void fprintf_debug(NewGC *gc, mpage *page, const char *msg, objhead *info, FILE* file, int isgc) { if (!isgc || postmaster_and_master_gc(gc)) { Scheme_Object *obj = OBJHEAD_TO_OBJPTR(info); - fprintf(file, "%s %p ot %i it %i im %i is %i is >> 3 %i\n", msg, obj, obj->type, info->type, info->mark, info->size, info->size >> 3); + fprintf(file, "%s %p ot %i it %i im %i is %i is >> 3 %i %p %i\n", msg, obj, obj->type, info->type, info->mark, info->size, info->size >> 3, page, page->marked_on); switch (obj->type) { case scheme_unix_path_type: if (pagemap_find_page(gc->page_maps, SCHEME_PATH_VAL(obj))) { @@ -3091,7 +3093,9 @@ static void fprintf_debug(NewGC *gc, const char *msg, objhead *info, FILE* file, break; case scheme_resolved_module_path_type: if (pagemap_find_page(gc->page_maps, SCHEME_PTR_VAL(obj))) { - fprintf_debug(gc, "RMP ", OBJPTR_TO_OBJHEAD(SCHEME_PTR_VAL(obj)), file, isgc); + /* + fprintf_debug(gc, page, "RMP ", OBJPTR_TO_OBJHEAD(SCHEME_PTR_VAL(obj)), file, isgc); + */ } else { fprintf(file, "RMP %p already freed and out of bounds\n", SCHEME_PATH_VAL(obj)); @@ -3102,11 +3106,8 @@ static void fprintf_debug(NewGC *gc, const char *msg, objhead *info, FILE* file, } } } -static void killing_debug(NewGC *gc, void *info) { - fprintf_debug(gc, "killing", (objhead *) info, gcdebugOUT(), 1); -} -static void marking_rmp_debug(NewGC *gc, void *info) { - fprintf_debug(gc, "marking rmp", (objhead *) info, gcdebugOUT(), 0); +static void killing_debug(NewGC *gc, mpage *page, objhead *info) { + fprintf_debug(gc, page, "killing", info, gcdebugOUT(), 1); } #endif @@ -3286,7 +3287,7 @@ static void repair_heap(NewGC *gc) #endif } else { #ifdef KILLING_DEBUG - killing_debug(gc, info); + killing_debug(gc, page, info); #endif info->dead = 1; start += info->size;