0.9.16.8: less conservatism
authorGabor Melis <mega@hotpop.com>
Fri, 1 Sep 2006 10:32:27 +0000 (10:32 +0000)
committerGabor Melis <mega@hotpop.com>
Fri, 1 Sep 2006 10:32:27 +0000 (10:32 +0000)
  * the word at control_stack_end is not part of the control stack and
    not a pointer to be preserved
  * similarly, don't preserve the first word after the interrupt context

src/runtime/gencgc.c
version.lisp-expr

index 76beaa1..e25dd40 100644 (file)
@@ -4053,7 +4053,7 @@ preserve_context_registers (os_context_t *c)
     #error "preserve_context_registers needs to be tweaked for non-x86 Darwin"
 #endif
 #endif
-    for(ptr = (void **)(c+1); ptr>=(void **)c; ptr--) {
+    for(ptr = ((void **)(c+1))-1; ptr>=(void **)c; ptr--) {
         preserve_pointer(*ptr);
     }
 }
@@ -4159,7 +4159,7 @@ garbage_collect_generation(generation_index_t generation, int raise)
 #else
             esp = (void **)((void *)&raise);
 #endif
-            for (ptr = (void **)th->control_stack_end; ptr > esp;  ptr--) {
+            for (ptr = ((void **)th->control_stack_end)-1; ptr > esp;  ptr--) {
                 preserve_pointer(*ptr);
             }
         }
index 97e2fb4..442bc92 100644 (file)
@@ -17,5 +17,5 @@
 ;;; 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.16.7"
+"0.9.16.8"