From b6add696af02da73b9d501544559b4966d9c2cc5 Mon Sep 17 00:00:00 2001 From: Kevin Tew Date: Wed, 5 Nov 2008 21:08:17 +0000 Subject: [PATCH] Moved static roots to NewGC svn: r12287 --- src/mzscheme/gc2/compact.c | 2 ++ src/mzscheme/gc2/newgc.c | 3 ++- src/mzscheme/gc2/roots.c | 6 +++--- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/mzscheme/gc2/compact.c b/src/mzscheme/gc2/compact.c index f3aba0d8c2..38e34240c8 100644 --- a/src/mzscheme/gc2/compact.c +++ b/src/mzscheme/gc2/compact.c @@ -2870,6 +2870,7 @@ static long started, rightnow, old; static void mark_roots() { + Roots *roots = &GC->roots; ImmobileBox *ib; int i; @@ -2912,6 +2913,7 @@ static void mark_roots() static void fixup_roots() { + Roots *roots = &GC->roots; ImmobileBox *ib; int i; diff --git a/src/mzscheme/gc2/newgc.c b/src/mzscheme/gc2/newgc.c index c008d24267..434fe292bf 100644 --- a/src/mzscheme/gc2/newgc.c +++ b/src/mzscheme/gc2/newgc.c @@ -933,8 +933,9 @@ static inline void *get_stack_base() { #include "roots.c" -#define traverse_roots(gcMUCK, set_bt_src) { \ +#define traverse_roots(gcMUCK, set_bt_src) { \ unsigned long j; \ + Roots *roots = &GC->roots; \ if(roots->roots) { \ sort_and_merge_roots(); \ for(j = 0; j < roots->count; j += 2) { \ diff --git a/src/mzscheme/gc2/roots.c b/src/mzscheme/gc2/roots.c index 6d1ed0a6a3..5e377f4269 100644 --- a/src/mzscheme/gc2/roots.c +++ b/src/mzscheme/gc2/roots.c @@ -11,9 +11,6 @@ #define ROOTS_PTR_ALIGNMENT WORD_SIZE #define ROOTS_PTR_TO_INT(x) ((unsigned long)x) -static Roots *roots = &(Roots) { 0 ,0, 0, 0, }; - - static void grow_roots(Roots *roots) { unsigned long *new_roots; @@ -38,6 +35,7 @@ static int compare_roots(const void *a, const void *b) static void sort_and_merge_roots() { + Roots *roots = &GC->roots; if (roots->nothing_new) return; @@ -83,6 +81,8 @@ static void sort_and_merge_roots() void GC_add_roots(void *start, void *end) { + Roots *roots = &GC->roots; + if (roots->count >= roots->size) { grow_roots(roots); }