public bool Run()
{
Report.Debug (DebugFlags.SSE, "{0} managed callback execute: {1}",
sse, sse.thread_lock);
//
// Steal the thread-lock.
//
if (sse.HasThreadLock) {
this.thread_lock = sse.thread_lock;
sse.thread_lock = null;
this.thread_lock.PopRegisters (inferior);
}
if (do_execute ()) {
sse.PushOperationNoExec (this);
return true;
}
//
// If we actually stole the thread-lock, then we must give it back here.
//
if ((thread_lock != null) && (thread_lock.StopEvent != null)) {
sse.ThreadManager.AddPendingEvent (sse, thread_lock.StopEvent);
return true;
}
return false;
}