From 053cfc0ddb60cfb7adf8c7357e2b1a834b7f453b Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 17 Jul 2015 09:47:22 -0600 Subject: [PATCH] fix an incorrect simpliciation in the GC I had tried to simplify the "generation 0" allocation function to always use `GEN0_PAGE_SIZE`, but "generation 0" is also used for place messages, in which case a much smaller size should be used. The "place-in-channel-fnl.rkt" test exposed this problem. --- racket/src/racket/gc2/newgc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/racket/src/racket/gc2/newgc.c b/racket/src/racket/gc2/newgc.c index 3b2b468996..910a43f880 100644 --- a/racket/src/racket/gc2/newgc.c +++ b/racket/src/racket/gc2/newgc.c @@ -1340,7 +1340,10 @@ inline static void gen0_sync_page_size_from_globals(NewGC *gc) { } inline static void gen0_allocate_and_setup_new_page(NewGC *gc) { - mpage *new_mpage = gen0_create_new_nursery_mpage(gc, GEN0_PAGE_SIZE); + /* Note that gc->gen0.page_alloc_size is not necessarily + GEN0_PAGE_SIZE. In the case of a place-message allocator, a + smaller size is used. */ + mpage *new_mpage = gen0_create_new_nursery_mpage(gc, gc->gen0.page_alloc_size); /* push page */ new_mpage->prev = gc->gen0.curr_alloc_page;