From 25f5e6b4ebab7f5f06b14abc8684062bb44e78f1 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 2 Jul 2006 12:38:07 +0000 Subject: [PATCH] fix prototype of vm_mmap, and fix Sparc-relevant alignment for small tagged objects svn: r3575 --- src/mzscheme/gc2/newgc.c | 3 +++ src/mzscheme/gc2/vm_mmap.c | 1 + 2 files changed, 4 insertions(+) diff --git a/src/mzscheme/gc2/newgc.c b/src/mzscheme/gc2/newgc.c index 406190d1ab..3ad4e6baa6 100644 --- a/src/mzscheme/gc2/newgc.c +++ b/src/mzscheme/gc2/newgc.c @@ -419,8 +419,10 @@ static void *allocate_big(size_t sizeb, int type) #ifdef ALIGN_DOUBLES # define ALIGN_SIZE(sizew) ((sizew & 0x1) ? (sizew + 1) : sizew) +# define ALIGN_BYTES_SIZE(sizeb) ((sizeb & WORD_SIZE) ? (sizeb + WORD_SIZE) : sizeb) #else # define ALIGN_SIZE(sizew) (sizew) +# define ALIGN_BYTES_SIZE(sizeb) (sizeb) #endif inline static void *allocate(size_t sizeb, int type) @@ -485,6 +487,7 @@ void *GC_malloc_one_small_tagged(size_t sizeb) unsigned long newsize; sizeb += WORD_SIZE; + sizeb = ALIGN_BYTES_SIZE(sizeb); newsize = gen0_alloc_page->size + sizeb; if(newsize > GEN0_PAGE_SIZE) { diff --git a/src/mzscheme/gc2/vm_mmap.c b/src/mzscheme/gc2/vm_mmap.c index cfb9c118a5..1ca696cfc6 100644 --- a/src/mzscheme/gc2/vm_mmap.c +++ b/src/mzscheme/gc2/vm_mmap.c @@ -36,6 +36,7 @@ int fd, fd_created; #endif inline static void *find_cached_pages(size_t len, size_t alignment); +static void free_actual_pages(void *p, size_t len, int zeroed); /* Instead of immediately freeing pages with munmap---only to mmap them again---we cache BLOCKFREE_CACHE_SIZE freed pages. A page is