[cmucl-commit] [git] CMU Common Lisp branch dynamic-stack-alloc updated. snapshot-2011-10-8-g73d642c

Raymond Toy rtoy at common-lisp.net
Wed Oct 5 07:51:08 CEST 2011


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  73d642c3e9cb6cc27f1e57ef1dcd5b5bf79e8624 (commit)
       via  cc34b6ac2b51d593b3828a47be2805e3ccf19b52 (commit)
       via  0495d941be1add43433892aaa4b6ecbb3ff13a6d (commit)
       via  36ab199b205b982866b177ea7ddbe636b69803a4 (commit)
       via  581895eac2841a04285a40cfae9b25fbdc1ff0fe (commit)
      from  8b8a38b2bad5a856dea915309be4f3697e2f0312 (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 73d642c3e9cb6cc27f1e57ef1dcd5b5bf79e8624
Author: Raymond Toy <toy.raymond at gmail.com>
Date:   Tue Oct 4 22:07:33 2011 -0700

    Use git describe as part of the version.  Include the dirty flag too.

diff --git a/tools/load-world.sh b/tools/load-world.sh
index 672a357..d381769 100755
--- a/tools/load-world.sh
+++ b/tools/load-world.sh
@@ -11,8 +11,9 @@ usage()
 
 SKIP_PCL=
 NO_PCL_FEATURE=
-# Default version is the date.
-VERSION="CVS Head `date '+%Y-%m-%d %H:%M:%S'`"
+# Default version is the date and the git hash
+GIT_HASH="`(cd src; git describe --dirty 2>/dev/null)`"
+VERSION="`date '+%Y-%m-%d %H:%M:%S'`"
 
 while getopts "p" arg
 do
@@ -57,6 +58,6 @@ $TARGET/lisp/lisp -core $TARGET/lisp/kernel.core <<EOF
 $NO_PCL_FEATURE
 
 (load "target:tools/worldload")
-$2
+$VERSION $GIT_HASH
 
 EOF

commit cc34b6ac2b51d593b3828a47be2805e3ccf19b52
Author: Raymond Toy <toy.raymond at gmail.com>
Date:   Tue Oct 4 21:57:36 2011 -0700

    Mmap the binding stack where space is available.
    
    Darwin-os.c:
    Linux-os.c:
    gencgc.c:
    save.c:
    o Use binding_stack instead of BINDING_STACK_START
    
    validate.c:
    o Dynamically allocate the binding stack if BINDING_STACK_START is not
      defined.
    
    x86-validate.c:
    o Don't define BINDING_STACK_START for Darwin and Linux.

diff --git a/lisp/Darwin-os.c b/lisp/Darwin-os.c
index db59d3d..cbaf65c 100644
--- a/lisp/Darwin-os.c
+++ b/lisp/Darwin-os.c
@@ -451,7 +451,7 @@ valid_addr(os_vm_address_t addr)
 	|| 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_START, binding_stack_size))
+	|| in_range_p(addr, binding_stack, binding_stack_size))
 	return TRUE;
     return FALSE;
 }
diff --git a/lisp/Linux-os.c b/lisp/Linux-os.c
index 3217476..ea50ef8 100644
--- a/lisp/Linux-os.c
+++ b/lisp/Linux-os.c
@@ -378,7 +378,7 @@ valid_addr(os_vm_address_t addr)
 	|| 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, control_stack_size)
-	|| in_range_p(addr, BINDING_STACK_START, binding_stack_size))
+	|| in_range_p(addr, binding_stack, binding_stack_size))
 	return TRUE;
     return FALSE;
 }
@@ -452,7 +452,7 @@ sigsegv_handler(HANDLER_ARGS)
     if (addr != NULL && context->sc_regs[reg_ALLOC] & (1 << 63)) {
 	context->sc_regs[reg_ALLOC] -= (1 << 63);
 	interrupt_handle_pending(context);
-    } else if (addr > CONTROL_STACK_TOP && addr < BINDING_STACK_START) {
+    } else if (addr > CONTROL_STACK_TOP && addr < binding_stack) {
 	fprintf(stderr, "Possible stack overflow at 0x%08lX!\n", addr);
 	/* try to fix control frame pointer */
 	while (!(control_stack <= *current_control_frame_pointer &&
diff --git a/lisp/gencgc.c b/lisp/gencgc.c
index 7b6b008..c21385e 100644
--- a/lisp/gencgc.c
+++ b/lisp/gencgc.c
@@ -2011,9 +2011,9 @@ control_stack_space_p(lispobj obj)
 static inline boolean
 binding_stack_space_p(lispobj obj)
 {
-    lispobj end = BINDING_STACK_START + binding_stack_size;
+    lispobj end = (char*) binding_stack + binding_stack_size;
 
-    return (obj >= BINDING_STACK_START) && (obj < end);
+    return (obj >= binding_stack) && (obj < end);
 }
     
 static inline boolean
@@ -7116,11 +7116,11 @@ verify_gc(void)
     int static_space_size = (lispobj *) SymbolValue(STATIC_SPACE_FREE_POINTER)
 	- (lispobj *) static_space;
     int binding_stack_size = (lispobj *) get_binding_stack_pointer()
-	- (lispobj *) BINDING_STACK_START;
+	- (lispobj *) binding_stack;
 
     verify_space((lispobj *) READ_ONLY_SPACE_START, read_only_space_size);
     verify_space((lispobj *) static_space, static_space_size);
-    verify_space((lispobj *) BINDING_STACK_START, binding_stack_size);
+    verify_space((lispobj *) binding_stack, binding_stack_size);
     verify_space((lispobj *) (void *) &scavenger_hooks, 1);
 }
 
diff --git a/lisp/save.c b/lisp/save.c
index f6fb4bd..bebeded 100644
--- a/lisp/save.c
+++ b/lisp/save.c
@@ -138,7 +138,7 @@ save(char *filename, lispobj init_function, int sse2_mode)
     }
     printf("[Undoing binding stack... ");
     fflush(stdout);
-    unbind_to_here((lispobj *) BINDING_STACK_START);
+    unbind_to_here((lispobj *) binding_stack);
     SetSymbolValue(CURRENT_CATCH_BLOCK, 0);
     SetSymbolValue(CURRENT_UNWIND_PROTECT_BLOCK, 0);
     SetSymbolValue(EVAL_STACK_TOP, 0);
@@ -277,7 +277,7 @@ save_executable(char *filename, lispobj init_function)
 
     printf("[Undoing binding stack... ");
     fflush(stdout);
-    unbind_to_here((lispobj *)BINDING_STACK_START);
+    unbind_to_here((lispobj *) binding_stack);
     SetSymbolValue(CURRENT_CATCH_BLOCK, 0);
     SetSymbolValue(CURRENT_UNWIND_PROTECT_BLOCK, 0);
     SetSymbolValue(EVAL_STACK_TOP, 0);
diff --git a/lisp/validate.c b/lisp/validate.c
index 3025ffc..bfaa6ac 100644
--- a/lisp/validate.c
+++ b/lisp/validate.c
@@ -115,8 +115,14 @@ validate(void)
 #endif
 
     /* Binding Stack */
+#if defined(BINDING_STACK_START)
     binding_stack = (lispobj *) BINDING_STACK_START;
     ensure_space(binding_stack, binding_stack_size);
+#else
+    binding_stack = (lispobj *) os_allocate(binding_stack_size);
+    
+#endif
+
 #ifdef sparc
     make_holes();
 #endif
diff --git a/lisp/x86-validate.h b/lisp/x86-validate.h
index a2c9414..a751154 100644
--- a/lisp/x86-validate.h
+++ b/lisp/x86-validate.h
@@ -128,7 +128,9 @@
 #define STATIC_SPACE_START	(SpaceStart_TargetStatic)
 #define STATIC_SPACE_SIZE	(0x0ffff000)	/* 256MB - 1 page */
 
+#if !defined(DARWIN)
 #define BINDING_STACK_START	(0x38000000)
+#endif
 #define BINDING_STACK_SIZE	(0x07fff000)	/* 128MB - 1 page */
 
 #if !defined(DARWIN)
@@ -181,7 +183,9 @@
 #define STATIC_SPACE_START	(SpaceStart_TargetStatic)
 #define STATIC_SPACE_SIZE	(0x0ffff000)	/* 256MB - 1 page */
 
+#if 0
 #define BINDING_STACK_START	(0x20000000)
+#endif
 #define BINDING_STACK_SIZE	(0x07fff000)	/* 128MB - 1 page */
 
 #if 0

commit 0495d941be1add43433892aaa4b6ecbb3ff13a6d
Author: Raymond Toy <toy.raymond at gmail.com>
Date:   Tue Oct 4 21:53:04 2011 -0700

    Regenerated.

diff --git a/i18n/locale/cmucl.pot b/i18n/locale/cmucl.pot
index 08392c7..abe9a3b 100644
--- a/i18n/locale/cmucl.pot
+++ b/i18n/locale/cmucl.pot
@@ -4772,6 +4772,10 @@ msgid ""
 msgstr ""
 
 #: src/code/float-trap.lisp
+msgid "SIGFPE with no exceptions currently enabled?"
+msgstr ""
+
+#: src/code/float-trap.lisp
 msgid ""
 "Execute BODY with the floating point exceptions listed in TRAPS\n"
 "  masked (disabled).  TRAPS should be a list of possible exceptions\n"

commit 36ab199b205b982866b177ea7ddbe636b69803a4
Author: Raymond Toy <toy.raymond at gmail.com>
Date:   Tue Oct 4 21:52:16 2011 -0700

    Use describe for the version instead of the tree hash.

diff --git a/tools/build.sh b/tools/build.sh
index 85e4041..74374dd 100755
--- a/tools/build.sh
+++ b/tools/build.sh
@@ -43,7 +43,7 @@ version=20b
 SRCDIR=src
 TOOLDIR=$SRCDIR/tools
 VERSION="`date '+%Y-%m-%d %H:%M:%S'`"
-GIT_HASH="`(cd src; git log -1 --pretty=format:%t 2>/dev/null)`"
+GIT_HASH="`(cd src; git describe --dirty 2>/dev/null)`"
 # Add the tree hash to the version
 VERSION="$VERSION $GIT_HASH"
 BASE=build

commit 581895eac2841a04285a40cfae9b25fbdc1ff0fe
Author: Raymond Toy <toy.raymond at gmail.com>
Date:   Mon Oct 3 21:22:21 2011 -0700

    Allocate the linkage table area before allocating the stacks.
    Otherwise, we might accidentally allocate the linkage table on top of
    the stacks which would create a mess.

diff --git a/lisp/validate.c b/lisp/validate.c
index f5fd135..3025ffc 100644
--- a/lisp/validate.c
+++ b/lisp/validate.c
@@ -94,6 +94,10 @@ validate(void)
     */
 #endif
 
+#ifdef LINKAGE_TABLE
+    ensure_space((lispobj *) FOREIGN_LINKAGE_SPACE_START,
+		 FOREIGN_LINKAGE_SPACE_SIZE);
+#endif
     /* Control Stack */
 
 #if defined(CONTROL_STACK_START)
@@ -113,10 +117,6 @@ validate(void)
     /* Binding Stack */
     binding_stack = (lispobj *) BINDING_STACK_START;
     ensure_space(binding_stack, binding_stack_size);
-#ifdef LINKAGE_TABLE
-    ensure_space((lispobj *) FOREIGN_LINKAGE_SPACE_START,
-		 FOREIGN_LINKAGE_SPACE_SIZE);
-#endif
 #ifdef sparc
     make_holes();
 #endif

-----------------------------------------------------------------------

Summary of changes:
 i18n/locale/cmucl.pot |    4 ++++
 lisp/Darwin-os.c      |    2 +-
 lisp/Linux-os.c       |    4 ++--
 lisp/gencgc.c         |    8 ++++----
 lisp/save.c           |    4 ++--
 lisp/validate.c       |   12 +++++++++---
 lisp/x86-validate.h   |    4 ++++
 tools/build.sh        |    2 +-
 tools/load-world.sh   |    7 ++++---
 9 files changed, 31 insertions(+), 16 deletions(-)


hooks/post-receive
-- 
CMU Common Lisp


More information about the cmucl-commit mailing list