Win64: fix stack-trace imprecision

Propagates repairs of 71e0bdfcff to Win64 stack handling.
This commit is contained in:
Matthew Flatt 2014-12-19 20:29:11 -07:00
parent 4b8b6fc360
commit e21f75fa1b

View File

@ -288,11 +288,17 @@ Scheme_Object *scheme_native_stack_trace(void)
else
first = name;
last = name;
if (shift_cache_to_next) {
stack_cache_stack[stack_cache_stack_pos].cache = last;
shift_cache_to_next = 0;
}
}
if (cache_sp) {
if (STK_COMP((uintptr_t)halfway, (uintptr_t)cache_sp)) {
set_cache(cache_sp, last);
if (!name)
shift_cache_to_next = 1;
halfway = stack_end;
unsuccess = -100000; /* if we got halfway, no need to bail out later */
}
@ -306,6 +312,9 @@ Scheme_Object *scheme_native_stack_trace(void)
}
}
if (shift_cache_to_next)
stack_cache_stack[stack_cache_stack_pos].cache = tail;
if (last)
SCHEME_CDR(last) = tail;
else