From 7990337c1e060767ae1e22e7d40ec79a2690840d Mon Sep 17 00:00:00 2001 From: Kevin Tew Date: Tue, 16 Feb 2010 18:47:04 +0000 Subject: [PATCH] Places gc fix svn: r18100 --- src/mzscheme/gc2/newgc.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/mzscheme/gc2/newgc.c b/src/mzscheme/gc2/newgc.c index 4cacc57f08..b49970c374 100644 --- a/src/mzscheme/gc2/newgc.c +++ b/src/mzscheme/gc2/newgc.c @@ -584,7 +584,7 @@ static inline void* REMOVE_BIG_PAGE_PTR_TAG(void *p) { void GC_check_master_gc_request() { #ifdef MZ_USE_PLACES NewGC *gc = GC_get_GC(); - if (MASTERGC && MASTERGC->major_places_gc == 1 && MASTERGCINFO->have_collected[gc->place_id] != 0) { + if (MASTERGC && MASTERGC->major_places_gc == 1 && MASTERGCINFO->have_collected[gc->place_id] != 1) { GC_gcollect(); } #endif @@ -1147,6 +1147,13 @@ inline static void resize_gen0(NewGC *gc, unsigned long new_size) } } +#ifdef MZ_USE_PLACES +inline static void master_set_max_size(NewGC *gc) +{ + gc->gen0.max_size = gc->gen0.current_size + GEN0_INITIAL_SIZE; +} +#endif + inline static void reset_nursery(NewGC *gc) { unsigned long new_gen0_size; @@ -3539,6 +3546,9 @@ static void garbage_collect(NewGC *gc, int force_full, int switching_master) clean_up_heap(gc); TIME_STEP("cleaned heap"); #ifdef MZ_USE_PLACES + if (postmaster_and_master_gc(gc) && !switching_master) { + master_set_max_size(gc); + } if (premaster_or_place_gc(gc) && !switching_master) #endif reset_nursery(gc);