* breakpoint.c (bpstat_check_breakpoint_conditions): For thread
authorDoug Evans <xdje42@gmail.com>
Thu, 14 Nov 2013 07:35:18 +0000 (23:35 -0800)
committerDoug Evans <xdje42@gmail.com>
Thu, 14 Nov 2013 07:35:18 +0000 (23:35 -0800)
specific breakpoints, don't evaluate breakpoint condition if
different thread.

gdb/ChangeLog
gdb/breakpoint.c

index 383c0b18c9ea59718a62084cc36b97fc16073b86..148b796ed3f646635658397deffdefd71d07dad7 100644 (file)
@@ -1,3 +1,9 @@
+2013-11-13  Doug Evans  <xdje42@gmail.com>
+
+       * breakpoint.c (bpstat_check_breakpoint_conditions): For thread
+       specific breakpoints, don't evaluate breakpoint condition if
+       different thread.
+
 2013-11-13  Keith Seitz  <keiths@redhat.com>
 
        PR c++/7935
index f0b496d7080aff09a7a7e036e5b01db1389381b4..5bfed9d14ec0dd1eabfbf90a81851042593f9799 100644 (file)
@@ -5134,6 +5134,14 @@ bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
       return;
     }
 
+  /* If this is a thread-specific breakpoint, don't waste cpu evaluating the
+     condition if this isn't the specified thread.  */
+  if (b->thread != -1 && b->thread != thread_id)
+    {
+      bs->stop = 0;
+      return;
+    }
+
   /* Evaluate Python breakpoints that have a "stop" method implemented.  */
   if (b->py_bp_object)
     bs->stop = gdbpy_should_stop (b->py_bp_object);
@@ -5217,10 +5225,6 @@ bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
     {
       bs->stop = 0;
     }
-  else if (b->thread != -1 && b->thread != thread_id)
-    {
-      bs->stop = 0;
-    }
   else if (b->ignore_count > 0)
     {
       b->ignore_count--;