The thread plans run before the event is broadcast, so they should be calling ShouldS...
authorJim Ingham <jingham@apple.com>
Fri, 22 Feb 2013 21:23:43 +0000 (21:23 +0000)
committerJim Ingham <jingham@apple.com>
Fri, 22 Feb 2013 21:23:43 +0000 (21:23 +0000)
they want to check.  The full ShouldStop should only be called on the public side of the event system.

llvm-svn: 175922

lldb/source/Target/StopInfo.cpp
lldb/source/Target/ThreadPlanBase.cpp

index 3500a88..322d05e 100644 (file)
@@ -569,7 +569,7 @@ public:
 
 protected:
     virtual bool
-    ShouldStop (Event *event_ptr)
+    ShouldStopSynchronous (Event *event_ptr)
     {
         // ShouldStop() method is idempotent and should not affect hit count.
         // See Process::RunPrivateStateThread()->Process()->HandlePrivateEvent()
@@ -604,6 +604,15 @@ protected:
         return m_should_stop;
     }
     
+    bool
+    ShouldStop (Event *event_ptr)
+    {
+        // This just reports the work done by PerformAction or the synchronous stop.  It should
+        // only ever get called after they have had a chance to run.
+        assert (m_should_stop_is_valid);
+        return m_should_stop;
+    }
+    
     virtual void
     PerformAction (Event *event_ptr)
     {
@@ -759,6 +768,8 @@ protected:
         if (log)
             log->Printf ("Process::%s returning from action with m_should_stop: %d.", __FUNCTION__, m_should_stop);
         
+        m_should_stop_is_valid = true;
+        
     }
         
 private:
index fda430c..cf1f68f 100644 (file)
@@ -101,7 +101,7 @@ ThreadPlanBase::ShouldStop (Event *event_ptr)
 
         case eStopReasonBreakpoint:
         case eStopReasonWatchpoint:
-            if (stop_info_sp->ShouldStop(event_ptr))
+            if (stop_info_sp->ShouldStopSynchronous(event_ptr))
             {
                 // If we are going to stop for a breakpoint, then unship the other plans
                 // at this point.  Don't force the discard, however, so Master plans can stay