protected override bool DoProcessEvent()
{
TargetAddress current_frame = inferior.CurrentFrame;
Report.Debug (DebugFlags.SSE, "{0} delegate impl stopped at {1}",
sse, current_frame);
if (finished)
return true;
/*
* If this is not a call instruction, continue stepping until we leave
* the current method.
*/
Instruction instruction = inferior.Architecture.ReadInstruction (
inferior, current_frame);
if ((instruction == null) || !instruction.HasInstructionSize) {
sse.do_step ();
return false;
}
Report.Debug (DebugFlags.SSE, "{0} delegate impl stopped at {1}: {2}",
sse, current_frame, instruction);
if ((instruction.InstructionType == Instruction.Type.IndirectJump) ||
(instruction.InstructionType == Instruction.Type.IndirectCall))
finished = true;
sse.do_step ();
return false;
}