I've noticed several problems in `newgc.c` which prevent Racket from building with backtrace support and I'm sending you two trivial patches which will hopefully help fix these issues properly.
I think these commits: http://git.racket-lang.org/plt/commitdiff/9b6ccb1476938785e95474968429359f05d7aaba http://git.racket-lang.org/plt/commitdiff/706c1b9e00b1534a32f1c5df8ca35b16ec450e89 renamed `GC` to `GC_instance`, but there're some leftovers in `backtrace.c` and `newgc.c` which lead to build failure due to undeclared `GC` identifier.
This fixes leftovers from http://git.racket-lang.org/plt/commitdiff/9b6ccb1476938785e95474968429359f05d7aaba http://git.racket-lang.org/plt/commitdiff/706c1b9e00b1534a32f1c5df8ca35b16ec450e89 diff --git a/src/racket/gc2/backtrace.c b/src/racket/gc2/backtrace.c index 4f3ecc4..783a7d9 100644 --- a/src/racket/gc2/backtrace.c +++ b/src/racket/gc2/backtrace.c @@ -45,7 +45,7 @@ static void *print_out_pointer(const char *prefix, void *p, trace_page_t *page; const char *what; - page = pagemap_find_page(GC->page_maps, p); + page = pagemap_find_page(GC_instance->page_maps, p); if (!page || (trace_page_type(page) == TRACE_PAGE_BAD)) { GCPRINT(GCOUTF, "%s??? %p\n", prefix, p); return NULL; @@ -94,7 +94,7 @@ static void print_traced_objects(int path_length_limit, GC_print_tagged_value_proc print_tagged_value) { int i; - GC->dumping_avoid_collection++; + GC_instance->dumping_avoid_collection++; GCPRINT(GCOUTF, "Begin Trace\n"); for (i = 0; i < found_object_count; i++) { void *p; @@ -107,5 +107,5 @@ static void print_traced_objects(int path_length_limit, } } GCPRINT(GCOUTF, "End Trace\n"); - --GC->dumping_avoid_collection; + --GC_instance->dumping_avoid_collection; } diff --git a/src/racket/gc2/newgc.c b/src/racket/gc2/newgc.c index c3222cf..dc44360 100644 --- a/src/racket/gc2/newgc.c +++ b/src/racket/gc2/newgc.c @@ -1332,7 +1332,7 @@ static void backtrace_new_page(NewGC *gc, mpage *page) static void free_backtrace(mpage *page) { if (page->backtrace) - free_pages(GC, page->backtrace, APAGE_SIZE); + free_pages(GC_instance, page->backtrace, APAGE_SIZE); } static void *bt_source;
Commit http://git.racket-lang.org/plt/commit/baab09fc1b3cb37b31c13920db230b28e7bde4f0 introduced arity change in `GC_X_variable_stack` but one of the calls in `newgc.c` was not updated to match new function signature.
This fixes bug introduced by http://git.racket-lang.org/plt/commit/baab09fc1b3cb37b31c13920db230b28e7bde4f0 diff --git a/src/racket/gc2/newgc.c b/src/racket/gc2/newgc.c index c3222cf..d2b15ee 100644 --- a/src/racket/gc2/newgc.c +++ b/src/racket/gc2/newgc.c @@ -3895,7 +3895,7 @@ void GC_dump_variable_stack(void **var_stack, stack_get_type_name = get_type_name; stack_get_xtagged_name = get_xtagged_name; stack_print_tagged_value = print_tagged_value; - GC_do_dump_variable_stack(var_stack, delta, limit, stack_mem); + GC_do_dump_variable_stack(var_stack, delta, limit, stack_mem, GC_get_GC()); } #endif
-- Happy Hacking. http://sphinx.net.ru む
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev

