void factor_vm::dispatch_signal(void *uap, void (handler)()) { UAP_STACK_POINTER(uap) = (UAP_STACK_POINTER_TYPE)fix_callstack_top((stack_frame *)UAP_STACK_POINTER(uap)); UAP_PROGRAM_COUNTER(uap) = (cell)handler; ctx->callstack_top = (stack_frame *)UAP_STACK_POINTER(uap); }
void factor_vm::dispatch_signal(void* uap, void(handler)()) { dispatch_signal_handler((cell*)&UAP_STACK_POINTER(uap), (cell*)&UAP_PROGRAM_COUNTER(uap), (cell)FUNCTION_CODE_POINTER(handler)); UAP_SET_TOC_POINTER(uap, (cell)FUNCTION_TOC_POINTER(handler)); }