diff --git a/vm/callstack.c b/vm/callstack.c index 271c7d9aa1..5c3ab0ea79 100644 --- a/vm/callstack.c +++ b/vm/callstack.c @@ -6,7 +6,7 @@ F_FASTCALL void save_callstack_bottom(F_STACK_FRAME *callstack_bottom) stack_chain->callstack_bottom = callstack_bottom; } -__attribute__((noinline)) void save_callstack_top(F_STACK_FRAME *callstack_top) +F_FASTCALL __attribute__((noinline)) void save_callstack_top(F_STACK_FRAME *callstack_top) { stack_chain->callstack_top = callstack_top; } diff --git a/vm/callstack.h b/vm/callstack.h index ff68a8ba26..564dea9738 100644 --- a/vm/callstack.h +++ b/vm/callstack.h @@ -1,5 +1,5 @@ F_FASTCALL void save_callstack_bottom(F_STACK_FRAME *callstack_bottom); -__attribute__((noinline)) void save_callstack_top(F_STACK_FRAME *callstack_top); +F_FASTCALL __attribute__((noinline)) void save_callstack_top(F_STACK_FRAME *callstack_top); #define FIRST_STACK_FRAME(stack) (F_STACK_FRAME *)((stack) + 1) diff --git a/vm/os-windows-nt.c b/vm/os-windows-nt.c index 8f7513a32a..f6aa314819 100644 --- a/vm/os-windows-nt.c +++ b/vm/os-windows-nt.c @@ -29,7 +29,7 @@ long exception_handler(PEXCEPTION_POINTERS pe) CONTEXT *c = (CONTEXT*)pe->ContextRecord; if(in_code_heap_p(c->Eip)) - signal_callstack_top = (void*)c->Esp; + signal_callstack_top = (void *)(c->Esp - CELLS); else signal_callstack_top = NULL;