From 626aa3821b5daf2c6595c759f00fdccff5aea2af Mon Sep 17 00:00:00 2001 From: Gabor Melis Date: Fri, 1 Sep 2006 10:32:27 +0000 Subject: [PATCH] 0.9.16.8: less conservatism * 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 | 4 ++-- version.lisp-expr | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/runtime/gencgc.c b/src/runtime/gencgc.c index 76beaa1..e25dd40 100644 --- a/src/runtime/gencgc.c +++ b/src/runtime/gencgc.c @@ -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); } } diff --git a/version.lisp-expr b/version.lisp-expr index 97e2fb4..442bc92 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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" -- 1.7.10.4