diff --git a/lisp/FreeBSD-os.c b/lisp/FreeBSD-os.c index 13b409f3ec11e508954d4218ad8e1931b557b0c7..ed459b23138709e8fb436dc9f71a9f3ba73f007e 100644 --- a/lisp/FreeBSD-os.c +++ b/lisp/FreeBSD-os.c @@ -12,7 +12,7 @@ * Much hacked by Paul Werkowski * GENCGC support by Douglas Crosher, 1996, 1997. * - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/FreeBSD-os.c,v 1.5 1999/11/29 17:04:07 dtc Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/FreeBSD-os.c,v 1.6 2000/10/24 13:32:30 dtc Exp $ * */ @@ -149,8 +149,8 @@ boolean valid_addr(os_vm_address_t addr) if ( in_range_p(addr, READ_ONLY_SPACE_START, READ_ONLY_SPACE_SIZE) || in_range_p(addr, STATIC_SPACE_START , STATIC_SPACE_SIZE ) - || in_range_p(addr, DYNAMIC_0_SPACE_START, DYNAMIC_SPACE_SIZE ) - || in_range_p(addr, DYNAMIC_1_SPACE_START, DYNAMIC_SPACE_SIZE ) + || in_range_p(addr, DYNAMIC_0_SPACE_START, dynamic_space_size ) + || in_range_p(addr, DYNAMIC_1_SPACE_START, dynamic_space_size ) || in_range_p(addr, CONTROL_STACK_START , CONTROL_STACK_SIZE ) || in_range_p(addr, BINDING_STACK_START , BINDING_STACK_SIZE )) return TRUE; diff --git a/lisp/Linux-os.c b/lisp/Linux-os.c index e905a25546d98ba29eef6555f8688cc870ef05c9..15ea86991556fe17b4fbe6cd2a90081d62319489 100644 --- a/lisp/Linux-os.c +++ b/lisp/Linux-os.c @@ -15,7 +15,7 @@ * GENCGC support by Douglas Crosher, 1996, 1997. * Alpha support by Julian Dolby, 1999. * - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/Linux-os.c,v 1.11 2000/08/27 14:45:41 dtc Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/Linux-os.c,v 1.12 2000/10/24 13:32:30 dtc Exp $ * */ @@ -192,8 +192,8 @@ boolean valid_addr(os_vm_address_t addr) if ( in_range_p(addr, READ_ONLY_SPACE_START, READ_ONLY_SPACE_SIZE) || in_range_p(addr, STATIC_SPACE_START , STATIC_SPACE_SIZE ) - || in_range_p(addr, DYNAMIC_0_SPACE_START, DYNAMIC_SPACE_SIZE ) - || in_range_p(addr, DYNAMIC_1_SPACE_START, DYNAMIC_SPACE_SIZE ) + || in_range_p(addr, DYNAMIC_0_SPACE_START, dynamic_space_size ) + || in_range_p(addr, DYNAMIC_1_SPACE_START, dynamic_space_size ) || in_range_p(addr, CONTROL_STACK_START , CONTROL_STACK_SIZE ) || in_range_p(addr, BINDING_STACK_START , BINDING_STACK_SIZE )) return TRUE; diff --git a/lisp/alpha-arch.c b/lisp/alpha-arch.c index be8af2fdfbcfb39b4aaf4a9919e42d9b1dc0a07c..f730c0a54d9096ebe2d27f2b5ac7f51f00b2deac 100644 --- a/lisp/alpha-arch.c +++ b/lisp/alpha-arch.c @@ -1,6 +1,6 @@ /* - $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/alpha-arch.c,v 1.5 1999/02/20 15:54:43 pw Exp $ + $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/alpha-arch.c,v 1.6 2000/10/24 13:32:30 dtc 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. @@ -48,7 +48,7 @@ os_vm_address_t arch_get_bad_addr(int sig, int code, struct sigcontext *scp) if( (scp->sc_pc < READ_ONLY_SPACE_START || scp->sc_pc >= READ_ONLY_SPACE_START+READ_ONLY_SPACE_SIZE) && ((lispobj *)scp->sc_pc < current_dynamic_space || - (lispobj *)scp->sc_pc >= current_dynamic_space + DYNAMIC_SPACE_SIZE)) + (lispobj *)scp->sc_pc >= current_dynamic_space + dynamic_space_size)) return NULL; badinst = *(unsigned int *)scp->sc_pc; diff --git a/lisp/cgc.c b/lisp/cgc.c index db6ce29db56d44dca47a203eb4b36d0e160d90e0..2b63412e0b8de478e836d159bf316ab72430249b 100644 --- a/lisp/cgc.c +++ b/lisp/cgc.c @@ -1,5 +1,5 @@ /* cgc.c -*- Mode: C; comment-column: 40; -*- - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/cgc.c,v 1.8 1997/11/25 14:21:08 pw Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/cgc.c,v 1.9 2000/10/24 13:32:30 dtc Exp $ * * Conservative Garbage Collector for CMUCL x86. * @@ -1880,7 +1880,7 @@ cgc_init_collector() heap_base = (void*)DYNAMIC_0_SPACE_START; /* I could actually use both spaces here but just 1 for now */ - heap_end = (char*)heap_base + DYNAMIC_SPACE_SIZE; + heap_end = (char*)heap_base + dynamic_space_size; max_blocks = BLOCK_NUMBER(heap_end) - BLOCK_NUMBER(heap_base); if((block_table_base = malloc(sizeof(struct cluster *) * max_blocks)) diff --git a/lisp/gc.c b/lisp/gc.c index 51873d8e1305f58e0f6da392eddbbbb84be9eba7..cc13413b2fc23e8933a6958893774b293c910694 100644 --- a/lisp/gc.c +++ b/lisp/gc.c @@ -1,7 +1,7 @@ /* * Stop and Copy GC based on Cheney's algorithm. * - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/gc.c,v 1.16 1998/07/26 00:05:31 dtc Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/gc.c,v 1.17 2000/10/24 13:32:30 dtc Exp $ * * Written by Christopher Hoover. */ @@ -299,7 +299,7 @@ void collect_garbage(void) #endif os_zero((os_vm_address_t) current_dynamic_space, - (os_vm_size_t) DYNAMIC_SPACE_SIZE); + (os_vm_size_t) dynamic_space_size); current_dynamic_space = new_space; #ifndef ibmrt @@ -2230,7 +2230,7 @@ void set_auto_gc_trigger(os_vm_size_t dynamic_usage) os_vm_address_t addr=(os_vm_address_t)current_dynamic_space + dynamic_usage; long length = - DYNAMIC_SPACE_SIZE + (os_vm_address_t)current_dynamic_space - addr; + dynamic_space_size + (os_vm_address_t)current_dynamic_space - addr; if(addr < (os_vm_address_t)current_dynamic_space_free_pointer) { fprintf(stderr, @@ -2265,12 +2265,12 @@ void clear_auto_gc_trigger(void) #if defined(SUNOS) || defined(SOLARIS)/* don't want to force whole space into swapping mode... */ os_vm_address_t addr=(os_vm_address_t)current_auto_gc_trigger; os_vm_size_t length= - DYNAMIC_SPACE_SIZE + (os_vm_address_t)current_dynamic_space - addr; + dynamic_space_size + (os_vm_address_t)current_dynamic_space - addr; os_validate(addr,length); #else os_protect((os_vm_address_t)current_dynamic_space, - DYNAMIC_SPACE_SIZE, + dynamic_space_size, OS_VM_PROT_ALL); #endif diff --git a/lisp/gencgc.c b/lisp/gencgc.c index 82baea377fd9236c8d663d96b1ac2a3fa250c6a1..18b2d37c96c538991b4198d2d82a608cd2076ecc 100644 --- a/lisp/gencgc.c +++ b/lisp/gencgc.c @@ -7,7 +7,7 @@ * * Douglas Crosher, 1996, 1997, 1998, 1999. * - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/gencgc.c,v 1.22 2000/10/21 12:50:42 dtc Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/gencgc.c,v 1.23 2000/10/24 13:32:31 dtc Exp $ * */ @@ -139,12 +139,17 @@ static int new_space; * GC structures and variables. */ +/* + * Number of pages within the dynamic heap, setup from the size of the + * dynamic space. + */ +unsigned dynamic_space_pages; + /* * An array of page structures is statically allocated. * This helps quickly map between an address its page structure. - * NUM_PAGES is set from the size of the dynamic space. */ -struct page page_table[NUM_PAGES]; +struct page *page_table; /* * Heap base, needed for mapping addresses to page structures. @@ -169,7 +174,7 @@ inline int find_page_index(void *addr) if (index >= 0) { index = (unsigned int) index / PAGE_SIZE; - if (index < NUM_PAGES) + if (index < dynamic_space_pages) return index; } @@ -566,7 +571,7 @@ static void gc_alloc_new_region(int nbytes, int unboxed, * not write protected, or marked dont_move. */ - while (first_page < NUM_PAGES) { + while (first_page < dynamic_space_pages) { int flags = page_table[first_page].flags; if (!(flags & PAGE_ALLOCATED_MASK) || ((flags & mmask) == mflags && @@ -576,7 +581,7 @@ static void gc_alloc_new_region(int nbytes, int unboxed, } /* Check for a failure */ - if (first_page >= NUM_PAGES) { + if (first_page >= dynamic_space_pages) { fprintf(stderr, "*A2 gc_alloc_new_region failed, nbytes=%d.\n", nbytes); print_generation_stats(1); exit(1); @@ -599,7 +604,7 @@ static void gc_alloc_new_region(int nbytes, int unboxed, bytes_found = PAGE_SIZE - page_table[first_page].bytes_used; num_pages = 1; while ((bytes_found < nbytes || num_pages < 2) - && last_page < NUM_PAGES - 1 + && last_page < dynamic_space_pages - 1 && !PAGE_ALLOCATED(last_page + 1)) { last_page++; num_pages++; @@ -619,10 +624,10 @@ static void gc_alloc_new_region(int nbytes, int unboxed, restart_page = last_page + 1; } - while (restart_page < NUM_PAGES && bytes_found < nbytes); + while (restart_page < dynamic_space_pages && bytes_found < nbytes); /* Check for a failure */ - if (restart_page >= NUM_PAGES && bytes_found < nbytes) { + if (restart_page >= dynamic_space_pages && bytes_found < nbytes) { fprintf(stderr, "*A1 gc_alloc_new_region failed, nbytes=%d.\n", nbytes); print_generation_stats(1); exit(1); @@ -1007,10 +1012,10 @@ static void *gc_alloc_large(int nbytes, int unboxed, first_page = restart_page; if (large) - while (first_page < NUM_PAGES && PAGE_ALLOCATED(first_page)) + while (first_page < dynamic_space_pages && PAGE_ALLOCATED(first_page)) first_page++; else - while (first_page < NUM_PAGES) { + while (first_page < dynamic_space_pages) { int flags = page_table[first_page].flags; if (!(flags & PAGE_ALLOCATED_MASK) || ((flags & mmask) == mflags && @@ -1020,7 +1025,7 @@ static void *gc_alloc_large(int nbytes, int unboxed, } /* Check for a failure */ - if (first_page >= NUM_PAGES) { + if (first_page >= dynamic_space_pages) { fprintf(stderr, "*A2 gc_alloc_large failed, nbytes=%d.\n", nbytes); print_generation_stats(1); exit(1); @@ -1037,7 +1042,7 @@ static void *gc_alloc_large(int nbytes, int unboxed, bytes_found = PAGE_SIZE - page_table[first_page].bytes_used; num_pages = 1; while (bytes_found < nbytes - && last_page < NUM_PAGES - 1 + && last_page < dynamic_space_pages - 1 && !PAGE_ALLOCATED(last_page + 1)) { last_page++; num_pages++; @@ -1057,10 +1062,10 @@ static void *gc_alloc_large(int nbytes, int unboxed, restart_page = last_page + 1; } - while ((restart_page < NUM_PAGES) && (bytes_found < nbytes)); + while ((restart_page < dynamic_space_pages) && (bytes_found < nbytes)); /* Check for a failure */ - if (restart_page >= NUM_PAGES && bytes_found < nbytes) { + if (restart_page >= dynamic_space_pages && bytes_found < nbytes) { fprintf(stderr, "*A1 gc_alloc_large failed, nbytes=%d.\n", nbytes); print_generation_stats(1); exit(1); @@ -1434,7 +1439,7 @@ static inline boolean from_space_p(lispobj obj) { int page_index = (void*) obj - heap_base; return page_index >= 0 - && (page_index = (unsigned int) page_index / PAGE_SIZE) < NUM_PAGES + && (page_index = (unsigned int) page_index / PAGE_SIZE) < dynamic_space_pages && PAGE_GENERATION(page_index) == from_space; } @@ -1442,7 +1447,7 @@ static inline boolean new_space_p(lispobj obj) { int page_index = (void*) obj - heap_base; return page_index >= 0 - && (page_index = (unsigned int) page_index / PAGE_SIZE) < NUM_PAGES + && (page_index = (unsigned int) page_index / PAGE_SIZE) < dynamic_space_pages && PAGE_GENERATION(page_index) == new_space; } @@ -4855,7 +4860,7 @@ static void scavenge_generation(int generation) #define SC_GEN_CK 0 #if SC_GEN_CK /* Clear the write_protected_cleared flags on all pages */ - for (i = 0; i < NUM_PAGES; i++) + for (i = 0; i < dynamic_space_pages; i++) page_table[i].flags &= ~PAGE_WRITE_PROTECTED_CLEADED_MASK; #endif @@ -4929,7 +4934,7 @@ static void scavenge_generation(int generation) * Check that none of the write_protected pages in this generation * have been written to. */ - for (i = 0; i < NUM_PAGES; i++) + for (i = 0; i < dynamic_space_pages; i++) if (PAGE_ALLOCATED(i) && page_table[i].bytes_used != 0 && PAGE_GENERATION(i) == generation @@ -5100,7 +5105,7 @@ static void scavenge_newspace_generation(int generation) #define SC_NS_GEN_CK 0 #if SC_NS_GEN_CK /* Clear the write_protected_cleared flags on all pages */ - for (i = 0; i < NUM_PAGES; i++) + for (i = 0; i < dynamic_space_pages; i++) page_table[i].flags &= ~PAGE_WRITE_PROTECTED_CLEARED; #endif @@ -5219,7 +5224,7 @@ static void scavenge_newspace_generation(int generation) * Check that none of the write_protected pages in this generation * have been written to. */ - for (i = 0; i < NUM_PAGES; i++) + for (i = 0; i < dynamic_space_pages; i++) if (PAGE_ALLOCATED(i) && page_table[i].bytes_used != 0 && PAGE_GENERATION(i) == generation @@ -5924,7 +5929,7 @@ void update_x86_dynamic_space_free_pointer(void) int last_page = -1; int i; - for (i = 0; i < NUM_PAGES; i++) + for (i = 0; i < dynamic_space_pages; i++) if (PAGE_ALLOCATED(i) && page_table[i].bytes_used != 0) last_page = i; @@ -6099,7 +6104,7 @@ void gc_free_heap(void) if (gencgc_verbose > 1) fprintf(stderr, "Free heap\n"); - for (page = 0; page < NUM_PAGES; page++) + for (page = 0; page < dynamic_space_pages; page++) /* Skip Free pages which should already be zero filled. */ if (PAGE_ALLOCATED(page)) { void *page_start, *addr; @@ -6195,8 +6200,19 @@ void gc_init(void) 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; + + page_table = (struct page *)malloc(dynamic_space_pages*sizeof(struct page)); + if (page_table == NULL) + { + fprintf(stderr, "Unable to allocate page table.\n"); + exit(1); + } + /* Initialise each page structure. */ - for (i = 0; i < NUM_PAGES; i++) { + + for (i = 0; i < dynamic_space_pages; i++) { /* Initial all pages as free. */ page_table[i].flags &= ~PAGE_ALLOCATED_MASK; page_table[i].bytes_used = 0; diff --git a/lisp/gencgc.h b/lisp/gencgc.h index dddbf1d16afae651497f546d8978d7865f5493b4..de8db5dce765d2d655caaa918a61cec3019aa8e8 100644 --- a/lisp/gencgc.h +++ b/lisp/gencgc.h @@ -7,7 +7,7 @@ * * Douglas Crosher, 1996, 1997. * - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/gencgc.h,v 1.4 2000/08/27 14:45:42 dtc Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/gencgc.h,v 1.5 2000/10/24 13:32:32 dtc Exp $ * */ @@ -126,10 +126,8 @@ struct page { #define PAGE_SIZE 4096 - -/* The number of pages needed for the dynamic space - rounding up. */ -#define NUM_PAGES ((DYNAMIC_SPACE_SIZE + (PAGE_SIZE - 1)) / PAGE_SIZE) -extern struct page page_table[NUM_PAGES]; +extern unsigned dynamic_space_pages; +extern struct page *page_table; /* diff --git a/lisp/globals.c b/lisp/globals.c index bc03c1880ce046bcdf1cfedf41dc97ccc875c744..590429f95f5877fc104518bf0da415ea8c38f673 100644 --- a/lisp/globals.c +++ b/lisp/globals.c @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/globals.c,v 1.2 1997/01/21 00:28:13 ram Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/globals.c,v 1.3 2000/10/24 13:32:32 dtc Exp $ */ /* Variables everybody needs to look at or frob on. */ @@ -20,6 +20,7 @@ lispobj *read_only_space; lispobj *static_space; lispobj *dynamic_0_space; lispobj *dynamic_1_space; +unsigned dynamic_space_size; lispobj *control_stack; #ifdef i386 lispobj *control_stack_end; diff --git a/lisp/globals.h b/lisp/globals.h index 207e368dcd97485ad6257c92980d03391cb9d6cc..5ecf696dee9e508dea361041b9b3285a86be83fc 100644 --- a/lisp/globals.h +++ b/lisp/globals.h @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/globals.h,v 1.4 1997/01/21 00:28:13 ram Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/globals.h,v 1.5 2000/10/24 13:32:32 dtc Exp $ */ #if !defined(_INCLUDE_GLOBALS_H_) #define _INCLUDED_GLOBALS_H_ @@ -19,6 +19,7 @@ extern lispobj *read_only_space; extern lispobj *static_space; extern lispobj *dynamic_0_space; extern lispobj *dynamic_1_space; +extern unsigned dynamic_space_size; extern lispobj *control_stack; extern lispobj *binding_stack; #ifdef i386 diff --git a/lisp/interrupt.c b/lisp/interrupt.c index 0bb24cbb1a2e94d4a5f7bfbdf7843971e761af8a..f3b959bd2ebed5d268e34b5e49578584b2a37703 100644 --- a/lisp/interrupt.c +++ b/lisp/interrupt.c @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.c,v 1.24 2000/10/21 13:01:23 dtc Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.c,v 1.25 2000/10/24 13:32:32 dtc Exp $ */ /* Interrupt handing magic. */ @@ -443,7 +443,7 @@ static boolean gc_trigger_hit(HANDLER_ARGS) lispobj *badaddr=(lispobj *)arch_get_bad_addr(signal, code, context); return (badaddr >= current_auto_gc_trigger && - badaddr < current_dynamic_space + DYNAMIC_SPACE_SIZE); + badaddr < current_dynamic_space + dynamic_space_size); } } #endif diff --git a/lisp/lisp.c b/lisp/lisp.c index 455a826d6e4deb65bf18b87641c8603dad9f98d1..8dc05bcdff801b17138da62cb529731fa8b36cd4 100644 --- a/lisp/lisp.c +++ b/lisp/lisp.c @@ -1,7 +1,7 @@ /* * main() entry point for a stand alone lisp image. * - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/lisp.c,v 1.19 2000/10/24 11:02:49 dtc Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/lisp.c,v 1.20 2000/10/24 13:32:32 dtc Exp $ * */ @@ -101,24 +101,50 @@ void main(int argc, char *argv[], char *envp[]) set_lossage_handler(ldb_monitor); monitor = FALSE; +#ifdef DEFAULT_DYNAMIC_SPACE_SIZE + dynamic_space_size = DEFAULT_DYNAMIC_SPACE_SIZE; +#else + dynamic_space_size = DYNAMIC_SPACE_SIZE; +#endif argptr = argv; - while ((arg = *++argptr) != NULL) { - if (strcmp(arg, "-core") == 0) { - if (core != NULL) { + while ((arg = *++argptr) != NULL) + { + if (strcmp(arg, "-core") == 0) + { + if (core != NULL) + { fprintf(stderr, "can only specify one core file.\n"); exit(1); - } + } core = *++argptr; - if (core == NULL) { - fprintf(stderr, "-core must be followed by the name of the core file to use.\n"); + if (core == NULL) + { + fprintf(stderr, "-core must be followed by the name of the core file to use.\n"); exit(1); - } - } - else if (strcmp(arg, "-monitor") == 0) { + } + } + else if (strcmp(arg, "-dynamic-space-size") == 0) + { + char *str = *++argptr; + if (str == NULL) + { + fprintf(stderr, "-dynamic-space-size must be followed by the size to use in MBytes.\n"); + exit(1); + } + dynamic_space_size = atoi(str) * 1024 * 1024; + if (dynamic_space_size > DYNAMIC_SPACE_SIZE) + { + fprintf(stderr, "-dynamic-space-size must be no greater than %d MBytes.\n", + DYNAMIC_SPACE_SIZE / (1024 * 1024)); + exit(1); + } + } + else if (strcmp(arg, "-monitor") == 0) + { monitor = TRUE; - } - } + } + } default_core = arch_init(); if (default_core == NULL) diff --git a/lisp/purify.c b/lisp/purify.c index 7fb11853002fa3f8570bee7d9fd8fab10023e0ae..a518e05c6bfba79e592ba359b14421594c32f4f9 100644 --- a/lisp/purify.c +++ b/lisp/purify.c @@ -10,7 +10,7 @@ and x86/GENCGC stack scavenging, by Douglas Crosher, 1996, 1997, 1998. - $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/purify.c,v 1.18 2000/08/27 14:45:42 dtc Exp $ + $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/purify.c,v 1.19 2000/10/24 13:32:32 dtc Exp $ */ #include <stdio.h> @@ -1514,11 +1514,11 @@ int purify(lispobj static_roots, lispobj read_only_roots) #if defined(WANT_CGC) && defined(X86_CGC_ACTIVE_P) if(SymbolValue(X86_CGC_ACTIVE_P) != T) os_zero((os_vm_address_t) current_dynamic_space, - (os_vm_size_t) DYNAMIC_SPACE_SIZE); + (os_vm_size_t) dynamic_space_size); #else #if !defined(GENCGC) os_zero((os_vm_address_t) current_dynamic_space, - (os_vm_size_t) DYNAMIC_SPACE_SIZE); + (os_vm_size_t) dynamic_space_size); #endif #endif diff --git a/lisp/sparc-arch.c b/lisp/sparc-arch.c index 0100b6619a17db6fe68e8b640c5af60cc8c85d1e..a59d80c5c756186e96dfe39df6e569483a715503 100644 --- a/lisp/sparc-arch.c +++ b/lisp/sparc-arch.c @@ -1,6 +1,6 @@ /* - $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/sparc-arch.c,v 1.7 1997/04/20 21:03:14 dtc Exp $ + $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/sparc-arch.c,v 1.8 2000/10/24 13:32:32 dtc 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. @@ -43,7 +43,7 @@ os_vm_address_t arch_get_bad_addr(HANDLER_ARGS) SC_PC(context) >= READ_ONLY_SPACE_START+READ_ONLY_SPACE_SIZE) && ((lispobj *)SC_PC(context) < current_dynamic_space && (lispobj *)SC_PC(context) >= - current_dynamic_space + DYNAMIC_SPACE_SIZE))) + current_dynamic_space + dynamic_space_size))) return 0; badinst = *(unsigned long *)SC_PC(context); diff --git a/lisp/validate.c b/lisp/validate.c index b9bf97c52dcc514ef883efb8033345a2900f298b..582c3cee8a0cc4b1c116334223bf522dfa72635e 100644 --- a/lisp/validate.c +++ b/lisp/validate.c @@ -1,5 +1,5 @@ /* - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/validate.c,v 1.6 1997/11/08 15:33:49 dtc Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/validate.c,v 1.7 2000/10/24 13:32:32 dtc Exp $ * * Memory Validation */ @@ -59,14 +59,14 @@ void validate(void) /* Dynamic-0 Space */ dynamic_0_space = (lispobj *) DYNAMIC_0_SPACE_START; - ensure_space(dynamic_0_space, DYNAMIC_SPACE_SIZE); + ensure_space(dynamic_0_space, dynamic_space_size); current_dynamic_space = dynamic_0_space; /* Dynamic-1 Space */ dynamic_1_space = (lispobj *) DYNAMIC_1_SPACE_START; #ifndef GENCGC - ensure_space(dynamic_1_space, DYNAMIC_SPACE_SIZE); + ensure_space(dynamic_1_space, dynamic_space_size); #endif /* Control Stack */ diff --git a/lisp/x86-validate.h b/lisp/x86-validate.h index a20df02aa4fc7685a98e533d5fef9c6fc8c048f4..cf7e106e73ed292d3f00e80329dbdfcd2404270e 100644 --- a/lisp/x86-validate.h +++ b/lisp/x86-validate.h @@ -3,7 +3,7 @@ * This code was written as part of the CMU Common Lisp project at * Carnegie Mellon University, and has been placed in the public domain. * - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/x86-validate.h,v 1.11 1999/09/16 15:40:11 dtc Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/x86-validate.h,v 1.12 2000/10/24 13:32:32 dtc Exp $ * */ @@ -52,6 +52,7 @@ #else #define DYNAMIC_SPACE_SIZE (0x04000000) /* 64MB */ #endif +#define DEFAULT_DYNAMIC_SPACE_SIZE (0x20000000) /* 512MB */ #endif @@ -70,10 +71,11 @@ #define DYNAMIC_0_SPACE_START (0x48000000) #ifdef GENCGC -#define DYNAMIC_SPACE_SIZE (0x20000000) /* 512MB */ +#define DYNAMIC_SPACE_SIZE (0x68000000) /* 1.625GB */ #else #define DYNAMIC_SPACE_SIZE (0x04000000) /* 64MB */ #endif +#define DEFAULT_DYNAMIC_SPACE_SIZE (0x20000000) /* 512MB */ #endif