This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMU Common Lisp".
The branch, dynamic-stack-alloc has been updated via 905107407b190f0bf1de0f5c90c3a588bd907dcf (commit) from 808706413ed9702874c33a45c9e95a53a4bd7683 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit 905107407b190f0bf1de0f5c90c3a588bd907dcf Author: Alex Goncharov alex-goncharov@comcast.net Date: Wed Oct 5 23:48:37 2011 -0400
Try git; cleanup changes; not sure if all of them will live long.
diff --git a/lisp/FreeBSD-os.c b/lisp/FreeBSD-os.c index d3549d5..28017eb 100644 --- a/lisp/FreeBSD-os.c +++ b/lisp/FreeBSD-os.c @@ -208,7 +208,8 @@ os_protect(os_vm_address_t address, os_vm_size_t length, os_vm_prot_t prot)
static boolean -in_range_p(os_vm_address_t a, lispobj sbeg, size_t slen) +/* in_range_p(os_vm_address_t a, lispobj sbeg, size_t slen) */ +in_range_p(os_vm_address_t a, os_vm_address_t sbeg, size_t slen) { char *beg = (char *) sbeg; char *end = (char *) sbeg + slen; @@ -220,20 +221,14 @@ in_range_p(os_vm_address_t a, lispobj sbeg, size_t slen) boolean valid_addr(os_vm_address_t addr) { - os_vm_address_t newaddr; - - newaddr = os_trunc_to_page(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) + return (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) || #ifndef GENCGC - || in_range_p(addr, DYNAMIC_1_SPACE_START, dynamic_space_size) + in_range_p(addr, DYNAMIC_1_SPACE_START, dynamic_space_size) || #endif - || in_range_p(addr, control_stack, control_stack_size) - || in_range_p(addr, binding_stack, binding_stack_size)) - return TRUE; - return FALSE; + in_range_p(addr, (os_vm_address_t) control_stack, control_stack_size) || + in_range_p(addr, (os_vm_address_t) binding_stack, binding_stack_size)); }
diff --git a/lisp/FreeBSD-os.h b/lisp/FreeBSD-os.h index 7150316..f85bd57 100644 --- a/lisp/FreeBSD-os.h +++ b/lisp/FreeBSD-os.h @@ -10,13 +10,13 @@ #ifndef _FREEBSD_OS_H_ #define _FREEBSD_OS_H_
+#include <sys/types.h> #include <sys/mman.h> - #include <osreldate.h> #include <signal.h> #include <ucontext.h>
-typedef void *os_vm_address_t; +typedef caddr_t os_vm_address_t; typedef size_t os_vm_size_t; typedef off_t os_vm_offset_t; typedef int os_vm_prot_t; diff --git a/lisp/coreparse.c b/lisp/coreparse.c index cf1ee43..9fe2a55 100644 --- a/lisp/coreparse.c +++ b/lisp/coreparse.c @@ -63,16 +63,16 @@ process_directory(int fd, long *ptr, int count) case STATIC_SPACE_ID: static_space = (lispobj *) addr; if (len >= static_space_size) { - fprintf(stderr, "Error: Static space size (%d) exceeds allocated space (%d)!\n", - len, static_space_size); + fprintf(stderr, "Error: Static space size (%ld) exceeds allocated space (%lu)!\n", + (long) len, (unsigned long) static_space_size); exit(1); } break; case READ_ONLY_SPACE_ID: /* Don't care about read only space */ if (len >= read_only_space_size) { - fprintf(stderr, "Error: Read only space size (%d) exceeds allocated space (%d)!\n", - len, read_only_space_size); + fprintf(stderr, "Error: Read only space size (%ld) exceeds allocated space (%lu)!\n", + (long) len, (unsigned long) read_only_space_size); exit(1); } break; diff --git a/lisp/gencgc.c b/lisp/gencgc.c index c21385e..ce02d6a 100644 --- a/lisp/gencgc.c +++ b/lisp/gencgc.c @@ -1979,9 +1979,8 @@ new_space_p(lispobj obj) static inline boolean dynamic_space_p(lispobj obj) { - lispobj end = DYNAMIC_0_SPACE_START + DYNAMIC_SPACE_SIZE; - - return (obj >= DYNAMIC_0_SPACE_START) && (obj < end); + lispobj end = (lispobj) DYNAMIC_0_SPACE_START + DYNAMIC_SPACE_SIZE; + return (obj >= (lispobj) DYNAMIC_0_SPACE_START) && (obj < end); }
static inline boolean @@ -1989,7 +1988,7 @@ static_space_p(lispobj obj) { lispobj end = SymbolValue(STATIC_SPACE_FREE_POINTER);
- return (obj >= STATIC_SPACE_START) && (obj < end); + return (obj >= (lispobj) STATIC_SPACE_START) && (obj < end); }
static inline boolean @@ -1997,23 +1996,25 @@ read_only_space_p(lispobj obj) { lispobj end = SymbolValue(READ_ONLY_SPACE_FREE_POINTER);
- return (obj >= READ_ONLY_SPACE_START) && (obj < end); + return (obj >= (lispobj) READ_ONLY_SPACE_START) && (obj < end); }
static inline boolean control_stack_space_p(lispobj obj) { - lispobj end = (char*) control_stack + control_stack_size; + lispobj *ptr = (lispobj *) obj; + char *end = (char*) control_stack + control_stack_size;
- return (obj >= control_stack) && (obj < end); + return (ptr >= control_stack) && (ptr < (lispobj *) end); }
static inline boolean binding_stack_space_p(lispobj obj) { - lispobj end = (char*) binding_stack + binding_stack_size; + lispobj *ptr = (lispobj *) obj; + char *end = (char*) binding_stack + binding_stack_size;
- return (obj >= binding_stack) && (obj < end); + return (ptr >= binding_stack) && (ptr < (lispobj *) end); }
static inline boolean @@ -6867,9 +6868,8 @@ void verify_space(lispobj * start, size_t words) { int dynamic_space = (find_page_index((void *) start) != -1); - unsigned long readonly_space = - (READ_ONLY_SPACE_START <= (unsigned long) start - && (unsigned long) start < SymbolValue(READ_ONLY_SPACE_FREE_POINTER)); + unsigned long readonly_space = ((unsigned long) READ_ONLY_SPACE_START <= (unsigned long) start && + (unsigned long) start < (unsigned long) SymbolValue(READ_ONLY_SPACE_FREE_POINTER));
while (words > 0) { size_t count = 1; @@ -6877,10 +6877,8 @@ verify_space(lispobj * start, size_t words)
if (Pointerp(thing)) { int page_index = find_page_index((void *) thing); - int to_readonly_space = (READ_ONLY_SPACE_START <= thing && - thing < - - SymbolValue(READ_ONLY_SPACE_FREE_POINTER)); + int to_readonly_space = ((unsigned long) READ_ONLY_SPACE_START <= thing && + (unsigned long) thing < (unsigned long) SymbolValue(READ_ONLY_SPACE_FREE_POINTER)); unsigned long to_static_space = ((unsigned long) static_space <= thing
@@ -7924,7 +7922,7 @@ void gencgc_pickup_dynamic(void) { int page = 0; - unsigned long addr = DYNAMIC_0_SPACE_START; + unsigned long addr = (unsigned long) DYNAMIC_0_SPACE_START; unsigned long alloc_ptr = (unsigned long) get_alloc_pointer();
/* Initialise the first region. */ diff --git a/lisp/globals.h b/lisp/globals.h index bfd8c6d..b18dd57 100644 --- a/lisp/globals.h +++ b/lisp/globals.h @@ -30,7 +30,7 @@ extern lispobj *binding_stack; extern unsigned long read_only_space_size; extern unsigned long binding_stack_size; extern unsigned long static_space_size; -extern unsigned long control_stack_size; +extern unsigned long control_stack_size; /* in characters */
#if (defined(i386) || defined(__x86_64)) extern lispobj *control_stack_end; diff --git a/lisp/lisp.h b/lisp/lisp.h index 9b48af7..f802594 100644 --- a/lisp/lisp.h +++ b/lisp/lisp.h @@ -39,14 +39,11 @@ typedef u32 lispobj; #define FALSE 0 #endif
-#define SymbolValue(sym) \ - (((struct symbol *)((sym)-type_OtherPointer))->value) -#define SetSymbolValue(sym,val) \ - (((struct symbol *)((sym)-type_OtherPointer))->value = (val)) +#define SymbolValue(sym) (((struct symbol *)((sym)-type_OtherPointer))->value) +#define SetSymbolValue(sym,val) (((struct symbol *)((sym)-type_OtherPointer))->value = (val))
/* This only words for static symbols. */ -#define SymbolFunction(sym) \ - (((struct fdefn *)(SymbolValue(sym)-type_OtherPointer))->function) +#define SymbolFunction(sym) (((struct fdefn *)(SymbolValue(sym)-type_OtherPointer))->function)
typedef enum {AUTO, X87, SSE2} fpu_mode_t;
diff --git a/lisp/x86-arch.c b/lisp/x86-arch.c index 474fb87..c0d3e75 100644 --- a/lisp/x86-arch.c +++ b/lisp/x86-arch.c @@ -520,7 +520,11 @@ arch_make_lazy_linkage(long linkage_entry) long arch_linkage_entry(unsigned long retaddr) { +#if defined __FreeBSD__ + return (((os_vm_address_t) retaddr - 5) - FOREIGN_LINKAGE_SPACE_START) / LinkageEntrySize; +#else return ((retaddr - 5) - FOREIGN_LINKAGE_SPACE_START) / LinkageEntrySize; +#endif } #endif /* LINKAGE_TABLE */
diff --git a/lisp/x86-validate.h b/lisp/x86-validate.h index 4eb56b0..f086d01 100644 --- a/lisp/x86-validate.h +++ b/lisp/x86-validate.h @@ -21,8 +21,6 @@ * 0x10000000->0x20000000 256M Read-Only Space. * 0x20000000->0x28000000 128M Reserved for shared libraries. * 0x28000000->0x38000000 256M Static Space. - * 0x38000000->0x40000000 128M Binding stack growing up. - * 0x40000000->0x48000000 128M Control stack growing down. * 0x48000000->0xB0000000 1664M Dynamic Space. * 0xB0000000->0xB1000000 Foreign Linkage Table * 0xE0000000-> 256M C stack - Alien stack. @@ -68,27 +66,25 @@ */
#ifdef __FreeBSD__ -#define READ_ONLY_SPACE_START (0x10000000) -#define READ_ONLY_SPACE_SIZE (0x0ffff000) /* 256MB - 1 page */ +#define READ_ONLY_SPACE_START ((os_vm_address_t) 0x10000000) +#define READ_ONLY_SPACE_SIZE ((os_vm_size_t) 0x0ffff000) /* 256MB - 1 page */
-#define STATIC_SPACE_START (0x28f00000) -#define STATIC_SPACE_SIZE (0x0f0ff000) /* 241MB - 1 page */ +#define STATIC_SPACE_START ((os_vm_address_t) 0x28f00000) +#define STATIC_SPACE_SIZE ((os_vm_size_t) 0x0f0ff000) /* 241MB - 1 page */
-#define BINDING_STACK_SIZE (0x07fff000) /* 128MB - 1 page */ -#define CONTROL_STACK_SIZE 0x07fd8000 /* 128MB - SIGSTKSZ */ -#define SIGNAL_STACK_START 0x47fd8000 -#define SIGNAL_STACK_SIZE SIGSTKSZ +#define BINDING_STACK_SIZE ((os_vm_size_t) 0x07fff000) /* 128MB - 1 page */ +#define CONTROL_STACK_SIZE ((os_vm_size_t) 0x07fd8000) /* 128MB - SIGSTKSZ */
-#define DYNAMIC_0_SPACE_START (0x48000000UL) +#define DYNAMIC_0_SPACE_START ((os_vm_address_t) 0x48000000UL) #ifdef GENCGC -#define DYNAMIC_SPACE_SIZE (0x78000000UL) /* May be up to 1.7 GB */ +#define DYNAMIC_SPACE_SIZE ((os_vm_size_t) 0x78000000UL) /* May be up to 1.7 GB */ #else -#define DYNAMIC_SPACE_SIZE (0x04000000UL) /* 64MB */ +#define DYNAMIC_SPACE_SIZE ((os_vm_size_t) 0x04000000UL) /* 64MB */ #endif -#define DEFAULT_DYNAMIC_SPACE_SIZE (0x20000000UL) /* 512MB */ +#define DEFAULT_DYNAMIC_SPACE_SIZE ((os_vm_size_t) 0x20000000UL) /* 512MB */ #ifdef LINKAGE_TABLE -#define FOREIGN_LINKAGE_SPACE_START ((unsigned long) LinkageSpaceStart) -#define FOREIGN_LINKAGE_SPACE_SIZE (0x100000UL) /* 1MB */ +#define FOREIGN_LINKAGE_SPACE_START ((os_vm_address_t) LinkageSpaceStart) +#define FOREIGN_LINKAGE_SPACE_SIZE ((os_vm_size_t) 0x100000UL) /* 1MB */ #endif #endif /* __FreeBSD__ */
-----------------------------------------------------------------------
Summary of changes: lisp/FreeBSD-os.c | 21 ++++++++------------- lisp/FreeBSD-os.h | 4 ++-- lisp/coreparse.c | 8 ++++---- lisp/gencgc.c | 32 +++++++++++++++----------------- lisp/globals.h | 2 +- lisp/lisp.h | 9 +++------ lisp/x86-arch.c | 4 ++++ lisp/x86-validate.h | 28 ++++++++++++---------------- 8 files changed, 49 insertions(+), 59 deletions(-)
hooks/post-receive