diff options
Diffstat (limited to 'src/alloc.c')
| -rw-r--r-- | src/alloc.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/alloc.c b/src/alloc.c index b5885bdb283..d62b671d440 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -4649,6 +4649,7 @@ void | |||
| 4649 | flush_stack_call_func (void (*func) (void *arg), void *arg) | 4649 | flush_stack_call_func (void (*func) (void *arg), void *arg) |
| 4650 | { | 4650 | { |
| 4651 | void *end; | 4651 | void *end; |
| 4652 | struct thread_state *self = current_thread; | ||
| 4652 | 4653 | ||
| 4653 | #ifdef HAVE___BUILTIN_UNWIND_INIT | 4654 | #ifdef HAVE___BUILTIN_UNWIND_INIT |
| 4654 | /* Force callee-saved registers and register windows onto the stack. | 4655 | /* Force callee-saved registers and register windows onto the stack. |
| @@ -4702,8 +4703,10 @@ flush_stack_call_func (void (*func) (void *arg), void *arg) | |||
| 4702 | #endif /* not GC_SAVE_REGISTERS_ON_STACK */ | 4703 | #endif /* not GC_SAVE_REGISTERS_ON_STACK */ |
| 4703 | #endif /* not HAVE___BUILTIN_UNWIND_INIT */ | 4704 | #endif /* not HAVE___BUILTIN_UNWIND_INIT */ |
| 4704 | 4705 | ||
| 4705 | current_thread->stack_top = end; | 4706 | self->stack_top = end; |
| 4706 | (*func) (arg); | 4707 | (*func) (arg); |
| 4708 | |||
| 4709 | eassert (current_thread == self); | ||
| 4707 | } | 4710 | } |
| 4708 | 4711 | ||
| 4709 | #endif /* GC_MARK_STACK != 0 */ | 4712 | #endif /* GC_MARK_STACK != 0 */ |