add assertion to flush_stack_call_func

functions called via flush_stack_call_func are assumed
to return with the global lock held again, and with
current_thread reset.  this assertion verifies part of this
This commit is contained in:
Tom Tromey 2013-07-06 14:31:16 -06:00
parent 32ca162e99
commit 0a6f2ff0c8

View file

@ -4649,6 +4649,7 @@ void
flush_stack_call_func (void (*func) (void *arg), void *arg)
{
void *end;
struct thread_state *self = current_thread;
#ifdef HAVE___BUILTIN_UNWIND_INIT
/* Force callee-saved registers and register windows onto the stack.
@ -4702,8 +4703,10 @@ flush_stack_call_func (void (*func) (void *arg), void *arg)
#endif /* not GC_SAVE_REGISTERS_ON_STACK */
#endif /* not HAVE___BUILTIN_UNWIND_INIT */
current_thread->stack_top = end;
self->stack_top = end;
(*func) (arg);
eassert (current_thread == self);
}
#endif /* GC_MARK_STACK != 0 */