0.9.9.38:
authorChristophe Rhodes <csr21@cam.ac.uk>
Wed, 22 Feb 2006 12:11:26 +0000 (12:11 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Wed, 22 Feb 2006 12:11:26 +0000 (12:11 +0000)
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.

src/runtime/alloc.c
src/runtime/gencgc.c
src/runtime/mips-arch.c
src/runtime/sparc-arch.c
version.lisp-expr

index e10634d..0638ddc 100644 (file)
@@ -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
index 596ebba..29feedf 100644 (file)
@@ -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);
index 0cb689c..4eab888 100644 (file)
@@ -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;
index 22d2403..a365bb0 100644 (file)
@@ -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);
index 9ee4e44..53905ec 100644 (file)
@@ -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"