internal override void ResumeUserThread(CommandResult result)
{
if (!ThreadManager.InBackgroundThread)
throw new InternalError ();
Report.Debug (DebugFlags.Threads,
"{0} resume user thread: {1} {2} {3}", this, engine_stopped,
HasThreadLock, thread.ThreadFlags);
if (thread_lock != null) {
if (thread_lock.PushedRegisters || (thread_lock.StopEvent == null))
throw new InternalError ();
manager.AddPendingEvent (this, thread_lock.StopEvent);
thread_lock = null;
engine_stopped = false;
current_operation = new OperationStep (this, StepMode.Run, result);
return;
}
if (!engine_stopped)
return;
StartOperation (new OperationStep (this, StepMode.Run, result));
}