xref: /llvm-project/lldb/source/Breakpoint/StopPointSiteList.cpp (revision c73a3f16f81aaa427c61f69020a82b5b09570ffb)
1 //===-- StopPointSiteList.cpp ---------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #include "lldb/Breakpoint/StopPointSiteList.h"
10 #include "lldb/Breakpoint/BreakpointSite.h"
11 #include "lldb/Breakpoint/WatchpointResource.h"
12 
13 #include "lldb/Utility/Stream.h"
14 #include <algorithm>
15 
16 using namespace lldb;
17 using namespace lldb_private;
18 
19 // This method is only defined when we're specializing for
20 // BreakpointSite / BreakpointLocation / Breakpoint.
21 // Watchpoints don't have a similar structure, they are
22 // WatchpointResource / Watchpoint
23 
24 template <>
StopPointSiteContainsBreakpoint(typename BreakpointSite::SiteID site_id,lldb::break_id_t bp_id)25 bool StopPointSiteList<BreakpointSite>::StopPointSiteContainsBreakpoint(
26     typename BreakpointSite::SiteID site_id, lldb::break_id_t bp_id) {
27   std::lock_guard<std::recursive_mutex> guard(m_mutex);
28   typename collection::const_iterator pos = GetIDConstIterator(site_id);
29   if (pos != m_site_list.end())
30     return pos->second->IsBreakpointAtThisSite(bp_id);
31 
32   return false;
33 }
34 
35 namespace lldb_private {
36 template class StopPointSiteList<BreakpointSite>;
37 } // namespace lldb_private
38