void factor_vm::primitive_set_callstack() { callstack *stack = untag_check<callstack>(dpop()); set_callstack(stack_chain->callstack_bottom, stack->top(), untag_fixnum(stack->length), memcpy); /* We cannot return here ... */ critical_error("Bug in set_callstack()",0); }
static void process_events(PluginData* data, PDReader* reader, PDWriter* writer) { uint32_t event; while ((event = PDRead_get_event(reader))) { switch (event) { //case PDEventType_getExceptionLocation : setExceptionLocation(plugin, writer); break; //case PDEventType_getCallstack : set_callstack(plugin, writer); break; case PDEventType_GetRegisters: { get_registers(data); break; } case PDEventType_GetCallstack: { if (should_send_command(data)) set_callstack(data, reader, writer); break; } case PDEventType_GetDisassembly: { if (should_send_command(data)) get_disassembly(data, reader, writer); break; } case PDEventType_GetMemory: { if (should_send_command(data)) get_memory(data, reader, writer); break; } case PDEventType_MenuEvent: { on_menu(data, reader); break; } case PDEventType_SetBreakpoint: { set_breakpoint(data, reader, writer); // if we add a breakpoint to VICE it will always stop but if we are already running when // adding the breakpoint we just force VICE to run again if (data->state == PDDebugState_Running) send_command(data, "ret\n"); break; } case PDEventType_DeleteBreakpoint: { del_breakpoint(data, reader, writer); break; } case PDEventType_SetExecutable: { //if (should_send_command(data)) set_executable(data, reader); break; } } } }