backtrace fix

This commit is contained in:
Matthew Flatt 2012-11-02 12:03:57 -06:00
parent a635fe817b
commit 3fd5b5eb6e
2 changed files with 11 additions and 1 deletions

View File

@ -47,7 +47,7 @@ static void *print_out_pointer(const char *prefix, void *p,
page = pagemap_find_page(GC_instance->page_maps, p);
if (!page || (trace_page_type(page) == TRACE_PAGE_BAD)) {
GCPRINT(GCOUTF, "%s%s %p %p\n", prefix, trace_source_kind(*_kind), p);
GCPRINT(GCOUTF, "%s%s %p\n", prefix, trace_source_kind(*_kind), p);
return NULL;
}
p = trace_pointer_start(page, p);

View File

@ -351,6 +351,10 @@ inline static void check_used_against_max(NewGC *gc, size_t len)
page_count = size_to_apage_count(len);
gc->used_pages += page_count;
#if MZ_GC_BACKTRACE
if (gc->dumping_avoid_collection) return;
#endif
if(gc->in_unsafe_allocation_mode) {
if(gc->used_pages > gc->max_pages_in_heap)
gc->unsafe_allocation_abort(gc);
@ -3412,6 +3416,12 @@ static void *trace_pointer_start(mpage *page, void *p) {
const char *trace_source_kind(int kind)
{
switch (kind) {
case PAGE_TAGGED: return "_TAGGED";
case PAGE_ATOMIC: return "_ATOMIC";
case PAGE_ARRAY: return "_ARRAY";
case PAGE_TARRAY: return "_TARRAY";
case PAGE_PAIR: return "_PAIR";
case PAGE_BIG: return "_BIG";
case BT_STACK: return "STACK";
case BT_ROOT: return "ROOT";
case BT_FINALIZER: return "FINALIZER";