From: Christophe Rhodes Date: Wed, 22 Feb 2006 12:11:26 +0000 (+0000) Subject: 0.9.9.38: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=427cac784579a935a06b0d66bac63dbf9bf325a4;p=sbcl.git 0.9.9.38: gencgc/ppc fixups ... fix the allocator/gc on threaded builds. Whoops. ... STACK_GROWS_DOWNARD ... in pa_alloc/gencgc/!x86, actually do the stack manipulation more plausibly. (Don't carefully write the value we want to preserve past the end of the stack, for one) ... whitespace. --- diff --git a/src/runtime/alloc.c b/src/runtime/alloc.c index e10634d..0638ddc 100644 --- a/src/runtime/alloc.c +++ b/src/runtime/alloc.c @@ -58,16 +58,16 @@ pa_alloc(int bytes) * we push it onto the lisp control stack, and read it back * off after any potential GC has finished */ #ifndef LISP_FEATURE_C_STACK_IS_CONTROL_STACK -#ifdef LISP_FEATURE_STACK_GROWS_DOWNARD_NOT_UPWARD +#ifdef LISP_FEATURE_STACK_GROWS_DOWNWARD_NOT_UPWARD #error "!C_STACK_IS_CONTROL_STACK and STACK_GROWS_DOWNWARD_NOT_UPWARD is not supported" #endif - current_control_stack_pointer += 1; *current_control_stack_pointer = result; + current_control_stack_pointer += 1; #endif do_pending_interrupt(); #ifndef LISP_FEATURE_C_STACK_IS_CONTROL_STACK - result = *current_control_stack_pointer; current_control_stack_pointer -= 1; + result = *current_control_stack_pointer; #endif } #else diff --git a/src/runtime/gencgc.c b/src/runtime/gencgc.c index 596ebba..29feedf 100644 --- a/src/runtime/gencgc.c +++ b/src/runtime/gencgc.c @@ -4531,7 +4531,7 @@ alloc(long nbytes) * section */ SetSymbolValue(GC_PENDING,T,thread); if (SymbolValue(GC_INHIBIT,thread) == NIL) - set_pseudo_atomic_interrupted(0); + set_pseudo_atomic_interrupted(thread); } } new_obj = gc_alloc_with_region(nbytes,0,region,0); diff --git a/src/runtime/mips-arch.c b/src/runtime/mips-arch.c index 0cb689c..4eab888 100644 --- a/src/runtime/mips-arch.c +++ b/src/runtime/mips-arch.c @@ -403,7 +403,7 @@ sigtrap_handler(int signal, siginfo_t *info, void *void_context) break; case 0x10: - arch_clear_pseudo_atomic_interrupted(context) + arch_clear_pseudo_atomic_interrupted(context) arch_skip_instruction(context); interrupt_handle_pending(context); return; diff --git a/src/runtime/sparc-arch.c b/src/runtime/sparc-arch.c index 22d2403..a365bb0 100644 --- a/src/runtime/sparc-arch.c +++ b/src/runtime/sparc-arch.c @@ -271,7 +271,7 @@ static void sigill_handler(int signal, siginfo_t *siginfo, void *void_context) to fixup up alloc-tn to remove the interrupted flag, skip over the trap instruction, and then handle the pending interrupt(s). */ - arch_clear_pseudo_atomic_interrupted(context); + arch_clear_pseudo_atomic_interrupted(context); arch_skip_instruction(context); interrupt_handle_pending(context); } @@ -319,8 +319,8 @@ static void sigemt_handler(int signal, siginfo_t *siginfo, void *void_context) result = op1 - op2; else result = op1 + op2; - /* KLUDGE: this & ~7 is a little bit magical but basically - clears pseudo_atomic bits if any */ + /* KLUDGE: this & ~7 is a little bit magical but basically + clears pseudo_atomic bits if any */ *os_context_register_addr(context, reg_ALLOC) = result & ~7; arch_skip_instruction(context); interrupt_handle_pending(context); diff --git a/version.lisp-expr b/version.lisp-expr index 9ee4e44..53905ec 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.9.9.37" +"0.9.9.38"