Date: Saturday, January 8, 2011 @ 19:12:36 Author: rtoy Path: /project/cmucl/cvsroot/src/lisp
Modified: Config.x86_darwin Darwin-os.h gencgc.c gencgc.h
Changes to support building on Mac OS X 10.6. When compiled on 10.6, the resulting binary still works on 10.5.
lisp/Config.x86_darwin: o Add -m32 flag to build and link a 32-bit binary.
lisp/Darwin-os.h: o Include <sys/ucontext.h> instead of <ucontext.h> to get rid of the error about deprecated functions in ucontext.h.
lisp/gencgc.h: o Mac OS X defines PAGE_SIZE in a header and that conflicts with our name. Rename our PAGE_SIZE to GC_PAGE_SIZE.
lisp/gencgc.c: o Rename PAGE_SIZE to GC_PAGE_SIZE.
-------------------+ Config.x86_darwin | 4 - Darwin-os.h | 4 - gencgc.c | 162 ++++++++++++++++++++++++++-------------------------- gencgc.h | 14 ++-- 4 files changed, 92 insertions(+), 92 deletions(-)
Index: src/lisp/Config.x86_darwin diff -u src/lisp/Config.x86_darwin:1.9 src/lisp/Config.x86_darwin:1.10 --- src/lisp/Config.x86_darwin:1.9 Fri Jul 30 18:51:58 2010 +++ src/lisp/Config.x86_darwin Sat Jan 8 19:12:36 2011 @@ -5,7 +5,7 @@ # Compile code that will run on OSX 10.4 (Tiger) MIN_VER = -mmacosx-version-min=10.4
-CPPFLAGS += -DDARWIN $(MIN_VER) +CPPFLAGS += -DDARWIN $(MIN_VER) -m32 CFLAGS += -g3 ASFLAGS += -g3 $(MIN_VER)
@@ -13,7 +13,7 @@ UNDEFSYMPATTERN = -Xlinker -u -Xlinker &
OS_SRC += Darwin-os.c mach-o.c -OS_LINK_FLAGS = $(MIN_VER) +OS_LINK_FLAGS = -m32 $(MIN_VER) OS_LIBS =
EXEC_FINAL_OBJ = exec-final.o Index: src/lisp/Darwin-os.h diff -u src/lisp/Darwin-os.h:1.7 src/lisp/Darwin-os.h:1.8 --- src/lisp/Darwin-os.h:1.7 Thu Jan 3 06:41:54 2008 +++ src/lisp/Darwin-os.h Sat Jan 8 19:12:36 2011 @@ -1,6 +1,6 @@ /*
- $Header: /project/cmucl/cvsroot/src/lisp/Darwin-os.h,v 1.7 2008-01-03 11:41:54 cshapiro Rel $ + $Header: /project/cmucl/cvsroot/src/lisp/Darwin-os.h,v 1.8 2011-01-09 00:12:36 rtoy Exp $
This code was written as part of the CMU Common Lisp project at Carnegie Mellon University, and has been placed in the public domain. @@ -14,7 +14,7 @@ #include <sys/mman.h> #include <sys/signal.h> #include <signal.h> -#include <ucontext.h> +#include <sys/ucontext.h> #include <mach/vm_types.h>
typedef caddr_t os_vm_address_t; Index: src/lisp/gencgc.c diff -u src/lisp/gencgc.c:1.111 src/lisp/gencgc.c:1.112 --- src/lisp/gencgc.c:1.111 Tue Dec 21 21:12:52 2010 +++ src/lisp/gencgc.c Sat Jan 8 19:12:36 2011 @@ -7,7 +7,7 @@ * * Douglas Crosher, 1996, 1997, 1998, 1999. * - * $Header: /project/cmucl/cvsroot/src/lisp/gencgc.c,v 1.111 2010-12-22 02:12:52 rtoy Exp $ + * $Header: /project/cmucl/cvsroot/src/lisp/gencgc.c,v 1.112 2011-01-09 00:12:36 rtoy Exp $ * */
@@ -324,7 +324,7 @@ /* * The minimum size for a large object. */ -unsigned large_object_size = 4 * PAGE_SIZE; +unsigned large_object_size = 4 * GC_PAGE_SIZE;
/* * Enable the filtering of stack/register pointers. This could reduce @@ -394,7 +394,7 @@ static char * page_address(int page_num) { - return heap_base + PAGE_SIZE * page_num; + return heap_base + GC_PAGE_SIZE * page_num; }
/* @@ -407,7 +407,7 @@ int index = (char *) addr - heap_base;
if (index >= 0) { - index = (unsigned int) index / PAGE_SIZE; + index = (unsigned int) index / GC_PAGE_SIZE; if (index < dynamic_space_pages) return index; } @@ -441,7 +441,7 @@ "*** Page fault in page not marked as write protected\n");
/* Un-protect the page */ - os_protect((os_vm_address_t) page_address(page_index), PAGE_SIZE, OS_VM_PROT_ALL); + os_protect((os_vm_address_t) page_address(page_index), GC_PAGE_SIZE, OS_VM_PROT_ALL); page_table[page_index].flags &= ~PAGE_WRITE_PROTECTED_MASK; page_table[page_index].flags |= PAGE_WRITE_PROTECT_CLEARED_MASK;
@@ -712,7 +712,7 @@ gens = NUM_GENERATIONS;
/* Print the heap stats */ - fprintf(stderr, " Page count (%d KB)\n", PAGE_SIZE / 1024); + fprintf(stderr, " Page count (%d KB)\n", GC_PAGE_SIZE / 1024); fprintf(stderr, " Gen Boxed Unboxed LB LUB Alloc Waste Trigger WP GCs Mem-age\n");
@@ -750,7 +750,7 @@ fprintf(stderr, " %5d: %5d %5d %5d %5d %10d %6d %10d %4d %3d %7.4f\n", i, boxed_cnt, unboxed_cnt, large_boxed_cnt, large_unboxed_cnt, generations[i].bytes_allocated, - PAGE_SIZE * count_generation_pages(i) - + GC_PAGE_SIZE * count_generation_pages(i) - generations[i].bytes_allocated, generations[i].gc_trigger, count_write_protect_generation_pages(i), generations[i].num_gc, gen_av_mem_age(i)); @@ -993,7 +993,7 @@
if (!(flags & PAGE_ALLOCATED_MASK) || ((flags & mmask) == mflags && - page_table[first_page].bytes_used < PAGE_SIZE - 32)) + page_table[first_page].bytes_used < GC_PAGE_SIZE - 32)) break; first_page++; } @@ -1022,19 +1022,19 @@ * number of pages in a region. */ last_page = first_page; - bytes_found = PAGE_SIZE - page_table[first_page].bytes_used; + bytes_found = GC_PAGE_SIZE - page_table[first_page].bytes_used; num_pages = 1; while ((bytes_found < nbytes || num_pages < 2) && last_page < dynamic_space_pages - 1 && !PAGE_ALLOCATED(last_page + 1)) { last_page++; num_pages++; - bytes_found += PAGE_SIZE; + bytes_found += GC_PAGE_SIZE; gc_assert(!PAGE_WRITE_PROTECTED(last_page)); }
- region_size = (PAGE_SIZE - page_table[first_page].bytes_used) - + PAGE_SIZE * (last_page - first_page); + region_size = (GC_PAGE_SIZE - page_table[first_page].bytes_used) + + GC_PAGE_SIZE * (last_page - first_page);
gc_assert(bytes_found == region_size);
@@ -1113,7 +1113,7 @@ if (last_page + 1 > last_free_page) { last_free_page = last_page + 1; set_alloc_pointer((lispobj) ((char *) heap_base + - PAGE_SIZE * last_free_page)); + GC_PAGE_SIZE * last_free_page));
} } @@ -1174,14 +1174,14 @@ gc_abort(); }
- new_area_start = PAGE_SIZE * first_page + offset; + new_area_start = GC_PAGE_SIZE * first_page + offset;
/* * Search backwards for a prior area that this follows from. If * found this will save adding a new area. */ for (i = new_areas_index - 1, c = 0; i >= 0 && c < 8; i--, c++) { - unsigned area_end = PAGE_SIZE * (*new_areas)[i].page + unsigned area_end = GC_PAGE_SIZE * (*new_areas)[i].page + (*new_areas)[i].offset + (*new_areas)[i].size;
#if 0 @@ -1281,8 +1281,8 @@ */ more = 0; bytes_used = alloc_region->free_pointer - page_address(first_page); - if (bytes_used > PAGE_SIZE) { - bytes_used = PAGE_SIZE; + if (bytes_used > GC_PAGE_SIZE) { + bytes_used = GC_PAGE_SIZE; more = 1; } page_table[first_page].bytes_used = bytes_used; @@ -1309,8 +1309,8 @@ /* Calc. the number of bytes used in this page. */ more = 0; bytes_used = alloc_region->free_pointer - page_address(next_page); - if (bytes_used > PAGE_SIZE) { - bytes_used = PAGE_SIZE; + if (bytes_used > GC_PAGE_SIZE) { + bytes_used = GC_PAGE_SIZE; more = 1; } page_table[next_page].bytes_used = bytes_used; @@ -1456,7 +1456,7 @@
if (!(flags & PAGE_ALLOCATED_MASK) || ((flags & mmask) == mflags && - page_table[first_page].bytes_used < PAGE_SIZE - 32)) + page_table[first_page].bytes_used < GC_PAGE_SIZE - 32)) break; first_page++; } @@ -1478,19 +1478,19 @@ #endif
last_page = first_page; - bytes_found = PAGE_SIZE - page_table[first_page].bytes_used; + bytes_found = GC_PAGE_SIZE - page_table[first_page].bytes_used; num_pages = 1; while (bytes_found < nbytes && last_page < dynamic_space_pages - 1 && !PAGE_ALLOCATED(last_page + 1)) { last_page++; num_pages++; - bytes_found += PAGE_SIZE; + bytes_found += GC_PAGE_SIZE; gc_assert(!PAGE_WRITE_PROTECTED(last_page)); }
- region_size = (PAGE_SIZE - page_table[first_page].bytes_used) - + PAGE_SIZE * (last_page - first_page); + region_size = (GC_PAGE_SIZE - page_table[first_page].bytes_used) + + GC_PAGE_SIZE * (last_page - first_page);
gc_assert(bytes_found == region_size);
@@ -1555,8 +1555,8 @@ */ more = 0; bytes_used = nbytes + orig_first_page_bytes_used; - if (bytes_used > PAGE_SIZE) { - bytes_used = PAGE_SIZE; + if (bytes_used > GC_PAGE_SIZE) { + bytes_used = GC_PAGE_SIZE; more = 1; } page_table[first_page].bytes_used = bytes_used; @@ -1579,13 +1579,13 @@ PAGE_FLAGS_UPDATE(next_page, mmask, mflags);
page_table[next_page].first_object_offset = - orig_first_page_bytes_used - PAGE_SIZE * (next_page - first_page); + orig_first_page_bytes_used - GC_PAGE_SIZE * (next_page - first_page);
/* Calc. the number of bytes used in this page. */ more = 0; bytes_used = nbytes + orig_first_page_bytes_used - byte_cnt; - if (bytes_used > PAGE_SIZE) { - bytes_used = PAGE_SIZE; + if (bytes_used > GC_PAGE_SIZE) { + bytes_used = GC_PAGE_SIZE; more = 1; } page_table[next_page].bytes_used = bytes_used; @@ -1607,7 +1607,7 @@ if (last_page + 1 > last_free_page) { last_free_page = last_page + 1; set_alloc_pointer((lispobj) ((char *) heap_base + - PAGE_SIZE * last_free_page)); + GC_PAGE_SIZE * last_free_page)); }
return (void *) (page_address(first_page) + orig_first_page_bytes_used); @@ -1961,7 +1961,7 @@
return page_index >= 0 && (page_index = - (unsigned int) page_index / PAGE_SIZE) < dynamic_space_pages + (unsigned int) page_index / GC_PAGE_SIZE) < dynamic_space_pages && PAGE_GENERATION(page_index) == from_space; }
@@ -1972,7 +1972,7 @@
return page_index >= 0 && (page_index = - (unsigned int) page_index / PAGE_SIZE) < dynamic_space_pages + (unsigned int) page_index / GC_PAGE_SIZE) < dynamic_space_pages && PAGE_GENERATION(page_index) == new_space; }
@@ -2170,14 +2170,14 @@
next_page = first_page; remaining_bytes = nwords * sizeof(lispobj); - while (remaining_bytes > PAGE_SIZE) { + while (remaining_bytes > GC_PAGE_SIZE) { gc_assert(PAGE_GENERATION(next_page) == from_space); gc_assert(PAGE_ALLOCATED(next_page)); gc_assert(!PAGE_UNBOXED(next_page)); gc_assert(PAGE_LARGE_OBJECT(next_page)); gc_assert(page_table[next_page].first_object_offset == - PAGE_SIZE * (first_page - next_page)); - gc_assert(page_table[next_page].bytes_used == PAGE_SIZE); + GC_PAGE_SIZE * (first_page - next_page)); + gc_assert(page_table[next_page].bytes_used == GC_PAGE_SIZE);
PAGE_FLAGS_UPDATE(next_page, PAGE_GENERATION_MASK, new_space);
@@ -2186,11 +2186,11 @@ * WP flag to avoid redundant calls. */ if (PAGE_WRITE_PROTECTED(next_page)) { - os_protect((os_vm_address_t) page_address(next_page), PAGE_SIZE, + os_protect((os_vm_address_t) page_address(next_page), GC_PAGE_SIZE, OS_VM_PROT_ALL); page_table[next_page].flags &= ~PAGE_WRITE_PROTECTED_MASK; } - remaining_bytes -= PAGE_SIZE; + remaining_bytes -= GC_PAGE_SIZE; next_page++; }
@@ -2218,10 +2218,10 @@
/* Free any remaining pages; needs care. */ next_page++; - while (old_bytes_used == PAGE_SIZE && + while (old_bytes_used == GC_PAGE_SIZE && PAGE_FLAGS(next_page, mmask) == mflags && page_table[next_page].first_object_offset == - PAGE_SIZE * (first_page - next_page)) { + GC_PAGE_SIZE * (first_page - next_page)) { /* * Checks out OK, free the page. Don't need to both zeroing * pages as this should have been done before shrinking the @@ -2352,18 +2352,18 @@
next_page = first_page; remaining_bytes = nwords * sizeof(lispobj); - while (remaining_bytes > PAGE_SIZE) { + while (remaining_bytes > GC_PAGE_SIZE) { gc_assert(PAGE_GENERATION(next_page) == from_space); gc_assert(PAGE_ALLOCATED(next_page)); gc_assert(PAGE_LARGE_OBJECT(next_page)); gc_assert(page_table[next_page].first_object_offset == - PAGE_SIZE * (first_page - next_page)); - gc_assert(page_table[next_page].bytes_used == PAGE_SIZE); + GC_PAGE_SIZE * (first_page - next_page)); + gc_assert(page_table[next_page].bytes_used == GC_PAGE_SIZE);
PAGE_FLAGS_UPDATE(next_page, PAGE_UNBOXED_MASK | PAGE_GENERATION_MASK, PAGE_UNBOXED_MASK | new_space); - remaining_bytes -= PAGE_SIZE; + remaining_bytes -= GC_PAGE_SIZE; next_page++; }
@@ -2391,10 +2391,10 @@
/* Free any remaining pages; needs care. */ next_page++; - while (old_bytes_used == PAGE_SIZE && + while (old_bytes_used == GC_PAGE_SIZE && PAGE_FLAGS(next_page, mmask) == mflags && page_table[next_page].first_object_offset == - PAGE_SIZE * (first_page - next_page)) { + GC_PAGE_SIZE * (first_page - next_page)) { /* * Checks out OK, free the page. Don't need to both zeroing * pages as this should have been done before shrinking the @@ -5880,13 +5880,13 @@
next_page = first_page; remaining_bytes = nwords * sizeof(lispobj); - while (remaining_bytes > PAGE_SIZE) { + while (remaining_bytes > GC_PAGE_SIZE) { gc_assert(PAGE_GENERATION(next_page) == from_space); gc_assert(PAGE_ALLOCATED(next_page)); gc_assert(PAGE_LARGE_OBJECT(next_page)); gc_assert(page_table[next_page].first_object_offset == - PAGE_SIZE * (first_page - next_page)); - gc_assert(page_table[next_page].bytes_used == PAGE_SIZE); + GC_PAGE_SIZE * (first_page - next_page)); + gc_assert(page_table[next_page].bytes_used == GC_PAGE_SIZE);
PAGE_FLAGS_UPDATE(next_page, PAGE_UNBOXED_MASK, unboxed << PAGE_UNBOXED_SHIFT); @@ -5896,7 +5896,7 @@ * pages aren't. */ gc_assert(!PAGE_WRITE_PROTECTED(next_page)); - remaining_bytes -= PAGE_SIZE; + remaining_bytes -= GC_PAGE_SIZE; next_page++; }
@@ -5924,9 +5924,9 @@
/* Free any remaining pages; needs care. */ next_page++; - while (old_bytes_used == PAGE_SIZE && + while (old_bytes_used == GC_PAGE_SIZE && PAGE_FLAGS(next_page, mmask) == mflags && - page_table[next_page].first_object_offset == PAGE_SIZE * (first_page + page_table[next_page].first_object_offset == GC_PAGE_SIZE * (first_page - next_page)) { @@ -6010,7 +6010,7 @@ while (page_table[first_page].first_object_offset != 0) { first_page--; /* Do some checks */ - gc_assert(page_table[first_page].bytes_used == PAGE_SIZE); + gc_assert(page_table[first_page].bytes_used == GC_PAGE_SIZE); gc_assert(PAGE_GENERATION(first_page) == from_space); gc_assert(PAGE_ALLOCATED(first_page)); gc_assert(PAGE_UNBOXED(first_page) == region_unboxed); @@ -6072,8 +6072,8 @@ gc_assert(!PAGE_WRITE_PROTECTED(i));
/* Check if this is the last page in this contiguous block */ - if (page_table[i].bytes_used < PAGE_SIZE - /* Or it is PAGE_SIZE and is the last in the block */ + if (page_table[i].bytes_used < GC_PAGE_SIZE + /* Or it is GC_PAGE_SIZE and is the last in the block */ || !PAGE_ALLOCATED(i + 1) || page_table[i + 1].bytes_used == 0 /* Next page free */ || PAGE_GENERATION(i + 1) != from_space /* Diff. gen */ @@ -6214,7 +6214,7 @@ fprintf(stderr, "* WP page %d of gen %d\n", page, gen); #endif
- os_protect((os_vm_address_t) page_addr, PAGE_SIZE, + os_protect((os_vm_address_t) page_addr, GC_PAGE_SIZE, OS_VM_PROT_READ | OS_VM_PROT_EXECUTE);
/* Note the page as protected in the page tables */ @@ -6292,8 +6292,8 @@ */ for (last_page = i;; last_page++) /* Check if this is the last page in this contiguous block */ - if (page_table[last_page].bytes_used < PAGE_SIZE - /* Or it is PAGE_SIZE and is the last in the block */ + if (page_table[last_page].bytes_used < GC_PAGE_SIZE + /* Or it is GC_PAGE_SIZE and is the last in the block */ || !PAGE_ALLOCATED(last_page + 1) || PAGE_UNBOXED(last_page + 1) || page_table[last_page + 1].bytes_used == 0 @@ -6318,7 +6318,7 @@ #endif { scavenge(page_address(i), (page_table[last_page].bytes_used - + PAGE_SIZE * (last_page - + + GC_PAGE_SIZE * (last_page - i)) / sizeof(lispobj));
@@ -6425,8 +6425,8 @@ */ for (last_page = i;; last_page++) /* Check if this is the last page in this contiguous block */ - if (page_table[last_page].bytes_used < PAGE_SIZE - /* Or it is PAGE_SIZE and is the last in the block */ + if (page_table[last_page].bytes_used < GC_PAGE_SIZE + /* Or it is GC_PAGE_SIZE and is the last in the block */ || !PAGE_ALLOCATED(last_page + 1) || PAGE_UNBOXED(last_page + 1) || page_table[last_page + 1].bytes_used == 0 @@ -6462,7 +6462,7 @@ else size = (page_table[last_page].bytes_used + - PAGE_SIZE * (last_page - i) - + GC_PAGE_SIZE * (last_page - i) - page_table[i].first_object_offset) / sizeof(lispobj);
@@ -6750,7 +6750,7 @@ * WP flag to avoid redundant calls. */ if (PAGE_WRITE_PROTECTED(i)) { - os_protect((os_vm_address_t) page_start, PAGE_SIZE, + os_protect((os_vm_address_t) page_start, GC_PAGE_SIZE, OS_VM_PROT_ALL); page_table[i].flags &= ~PAGE_WRITE_PROTECTED_MASK; } @@ -6802,7 +6802,7 @@ void *page_start = (void *) page_address(last_page);
if (PAGE_WRITE_PROTECTED(last_page)) { - os_protect((os_vm_address_t) page_start, PAGE_SIZE, + os_protect((os_vm_address_t) page_start, GC_PAGE_SIZE, OS_VM_PROT_ALL); page_table[last_page].flags &= ~PAGE_WRITE_PROTECTED_MASK; } @@ -6820,10 +6820,10 @@ page_start = page_address(first_page);
os_invalidate((os_vm_address_t) page_start, - PAGE_SIZE * (last_page - first_page)); + GC_PAGE_SIZE * (last_page - first_page)); addr = (char *) os_validate((os_vm_address_t) page_start, - PAGE_SIZE * (last_page - first_page)); + GC_PAGE_SIZE * (last_page - first_page)); if (addr == NULL || addr != page_start) fprintf(stderr, "gc_zero: page moved, 0x%08lx ==> 0x%08lx!\n", (unsigned long) page_start, (unsigned long) addr); @@ -6831,7 +6831,7 @@ int *page_start;
page_start = (int *) page_address(first_page); - memset(page_start, 0, PAGE_SIZE * (last_page - first_page)); + memset(page_start, 0, GC_PAGE_SIZE * (last_page - first_page)); }
first_page = last_page; @@ -7150,8 +7150,8 @@ */ for (last_page = i;; last_page++) /* Check if this is the last page in this contiguous block */ - if (page_table[last_page].bytes_used < PAGE_SIZE - /* Or it is PAGE_SIZE and is the last in the block */ + if (page_table[last_page].bytes_used < GC_PAGE_SIZE + /* Or it is GC_PAGE_SIZE and is the last in the block */ || !PAGE_ALLOCATED(last_page + 1) || PAGE_UNBOXED(last_page + 1) != region_unboxed || page_table[last_page + 1].bytes_used == 0 @@ -7161,7 +7161,7 @@
verify_space((lispobj *) page_address(i), (page_table[last_page].bytes_used + - PAGE_SIZE * (last_page - i)) / sizeof(lispobj)); + GC_PAGE_SIZE * (last_page - i)) / sizeof(lispobj)); i = last_page; } } @@ -7185,7 +7185,7 @@ fprintf(stderr, "** free page not zero @ %lx\n", (unsigned long) (start_addr + i)); } else { - int free_bytes = PAGE_SIZE - page_table[page].bytes_used; + int free_bytes = GC_PAGE_SIZE - page_table[page].bytes_used;
if (free_bytes > 0) { unsigned long *start_addr = @@ -7251,7 +7251,7 @@
page_start = (void *) page_address(i);
- os_protect((os_vm_address_t) page_start, PAGE_SIZE, + os_protect((os_vm_address_t) page_start, GC_PAGE_SIZE, OS_VM_PROT_READ | OS_VM_PROT_EXECUTE);
/* Note the page as protected in the page tables */ @@ -7396,7 +7396,7 @@
fprintf(stderr, "Non-movable pages due to conservative pointers = %d, %d bytes\n", - num_dont_move_pages, PAGE_SIZE * num_dont_move_pages); + num_dont_move_pages, GC_PAGE_SIZE * num_dont_move_pages); #if !(defined(i386) || defined(__x86_64)) /* * There shouldn't be any non-movable pages because we don't have @@ -7576,7 +7576,7 @@ last_free_page = last_page + 1;
set_alloc_pointer((lispobj) - ((char *) heap_base + PAGE_SIZE * last_free_page)); + ((char *) heap_base + GC_PAGE_SIZE * last_free_page)); }
@@ -7770,12 +7770,12 @@ page_start = (void *) page_address(page);
/* First remove any write protection */ - os_protect((os_vm_address_t) page_start, PAGE_SIZE, OS_VM_PROT_ALL); + os_protect((os_vm_address_t) page_start, GC_PAGE_SIZE, OS_VM_PROT_ALL); page_table[page].flags &= ~PAGE_WRITE_PROTECTED_MASK;
- os_invalidate((os_vm_address_t) page_start, PAGE_SIZE); + os_invalidate((os_vm_address_t) page_start, GC_PAGE_SIZE); addr = - (char *) os_validate((os_vm_address_t) page_start, PAGE_SIZE); + (char *) os_validate((os_vm_address_t) page_start, GC_PAGE_SIZE); if (addr == NULL || addr != page_start) fprintf(stderr, "gc_zero: page moved, 0x%08lx ==> 0x%08lx!\n", (unsigned long) page_start, (unsigned long) addr); @@ -7853,7 +7853,7 @@ heap_base = (void *) DYNAMIC_0_SPACE_START;
/* The number of pages needed for the dynamic space - rounding up. */ - dynamic_space_pages = (dynamic_space_size + (PAGE_SIZE - 1)) / PAGE_SIZE; + dynamic_space_pages = (dynamic_space_size + (GC_PAGE_SIZE - 1)) / GC_PAGE_SIZE;
page_table = (struct page *) malloc(dynamic_space_pages * sizeof(struct page)); @@ -7932,16 +7932,16 @@ page_table[page].flags |= PAGE_ALLOCATED_MASK; page_table[page].flags &= ~(PAGE_UNBOXED_MASK | PAGE_GENERATION_MASK | PAGE_LARGE_OBJECT_MASK); - page_table[page].bytes_used = PAGE_SIZE; + page_table[page].bytes_used = GC_PAGE_SIZE; page_table[page].first_object_offset = (char *) DYNAMIC_0_SPACE_START - page_address(page); - addr += PAGE_SIZE; + addr += GC_PAGE_SIZE; page++; } while (addr < alloc_ptr);
- generations[0].bytes_allocated = PAGE_SIZE * page; - bytes_allocated = PAGE_SIZE * page; + generations[0].bytes_allocated = GC_PAGE_SIZE * page; + bytes_allocated = GC_PAGE_SIZE * page;
set_current_region_free((lispobj) boxed_region.free_pointer); set_current_region_end((lispobj) boxed_region.end_addr); Index: src/lisp/gencgc.h diff -u src/lisp/gencgc.h:1.16 src/lisp/gencgc.h:1.17 --- src/lisp/gencgc.h:1.16 Mon Nov 2 10:05:07 2009 +++ src/lisp/gencgc.h Sat Jan 8 19:12:36 2011 @@ -7,7 +7,7 @@ * * Douglas Crosher, 1996, 1997. * - * $Header: /project/cmucl/cvsroot/src/lisp/gencgc.h,v 1.16 2009-11-02 15:05:07 rtoy Rel $ + * $Header: /project/cmucl/cvsroot/src/lisp/gencgc.h,v 1.17 2011-01-09 00:12:36 rtoy Exp $ * */
@@ -124,7 +124,7 @@ */
#if defined(i386) -#define PAGE_SIZE 4096 +#define GC_PAGE_SIZE 4096 #elif defined(sparc) /* * For sparc, the minimum page size (physical page size) is 8K. @@ -134,17 +134,17 @@ * page size. (I'm assuming the gain is because we do the kernel * allocation trap less often.) */ -#define PAGE_SIZE (4*8192) +#define GC_PAGE_SIZE (4*8192) #elif defined(DARWIN) /* * The physical page size is 4K. Like sparc, this appears to be * somewhat slow (but need to verify that), so let's make the page * size 32K so we hit the allocation trap less often. */ -/*#define PAGE_SIZE 4096*/ -/*#define PAGE_SIZE (2*4096)*/ -#define PAGE_SIZE (4*4096) -/*#define PAGE_SIZE (8*4096)*/ +/*#define GC_PAGE_SIZE 4096*/ +/*#define GC_PAGE_SIZE (2*4096)*/ +#define GC_PAGE_SIZE (4*4096) +/*#define GC_PAGE_SIZE (8*4096)*/ #endif
extern unsigned dynamic_space_pages;