From: Christophe R. <cr...@us...> - 2006-02-22 12:11:41
|
Update of /cvsroot/sbcl/sbcl/src/runtime In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20997/src/runtime Modified Files: alloc.c gencgc.c mips-arch.c sparc-arch.c Log Message: 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. Index: alloc.c =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/alloc.c,v retrieving revision 1.24 retrieving revision 1.25 diff -u -d -r1.24 -r1.25 --- alloc.c 21 Feb 2006 22:59:32 -0000 1.24 +++ alloc.c 22 Feb 2006 12:11:27 -0000 1.25 @@ -58,16 +58,16 @@ * 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 Index: gencgc.c =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/gencgc.c,v retrieving revision 1.97 retrieving revision 1.98 diff -u -d -r1.97 -r1.98 --- gencgc.c 21 Feb 2006 22:59:32 -0000 1.97 +++ gencgc.c 22 Feb 2006 12:11:27 -0000 1.98 @@ -4531,7 +4531,7 @@ * 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); Index: mips-arch.c =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/mips-arch.c,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- mips-arch.c 21 Feb 2006 22:59:33 -0000 1.20 +++ mips-arch.c 22 Feb 2006 12:11:27 -0000 1.21 @@ -403,7 +403,7 @@ break; case 0x10: - arch_clear_pseudo_atomic_interrupted(context) + arch_clear_pseudo_atomic_interrupted(context) arch_skip_instruction(context); interrupt_handle_pending(context); return; Index: sparc-arch.c =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/sparc-arch.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- sparc-arch.c 21 Feb 2006 22:59:34 -0000 1.16 +++ sparc-arch.c 22 Feb 2006 12:11:27 -0000 1.17 @@ -271,7 +271,7 @@ 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 @@ 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); |