aboutsummaryrefslogtreecommitdiff
path: root/source/Breakpoint/WatchpointList.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/Breakpoint/WatchpointList.cpp')
-rw-r--r--source/Breakpoint/WatchpointList.cpp407
1 files changed, 178 insertions, 229 deletions
diff --git a/source/Breakpoint/WatchpointList.cpp b/source/Breakpoint/WatchpointList.cpp
index f662c24cecee..6ec3bd09c142 100644
--- a/source/Breakpoint/WatchpointList.cpp
+++ b/source/Breakpoint/WatchpointList.cpp
@@ -7,7 +7,6 @@
//
//===----------------------------------------------------------------------===//
-
// C Includes
// C++ Includes
// Other libraries and framework includes
@@ -18,291 +17,241 @@
using namespace lldb;
using namespace lldb_private;
-WatchpointList::WatchpointList() : m_watchpoints(), m_mutex(), m_next_wp_id(0)
-{
-}
+WatchpointList::WatchpointList()
+ : m_watchpoints(), m_mutex(), m_next_wp_id(0) {}
-WatchpointList::~WatchpointList()
-{
-}
+WatchpointList::~WatchpointList() {}
// Add a watchpoint to the list.
-lldb::watch_id_t
-WatchpointList::Add (const WatchpointSP &wp_sp, bool notify)
-{
- std::lock_guard<std::recursive_mutex> guard(m_mutex);
- wp_sp->SetID(++m_next_wp_id);
- m_watchpoints.push_back(wp_sp);
- if (notify)
- {
- if (wp_sp->GetTarget().EventTypeHasListeners(Target::eBroadcastBitWatchpointChanged))
- wp_sp->GetTarget().BroadcastEvent (Target::eBroadcastBitWatchpointChanged,
- new Watchpoint::WatchpointEventData (eWatchpointEventTypeAdded, wp_sp));
- }
- return wp_sp->GetID();
+lldb::watch_id_t WatchpointList::Add(const WatchpointSP &wp_sp, bool notify) {
+ std::lock_guard<std::recursive_mutex> guard(m_mutex);
+ wp_sp->SetID(++m_next_wp_id);
+ m_watchpoints.push_back(wp_sp);
+ if (notify) {
+ if (wp_sp->GetTarget().EventTypeHasListeners(
+ Target::eBroadcastBitWatchpointChanged))
+ wp_sp->GetTarget().BroadcastEvent(Target::eBroadcastBitWatchpointChanged,
+ new Watchpoint::WatchpointEventData(
+ eWatchpointEventTypeAdded, wp_sp));
+ }
+ return wp_sp->GetID();
}
-void
-WatchpointList::Dump (Stream *s) const
-{
- DumpWithLevel(s, lldb::eDescriptionLevelBrief);
+void WatchpointList::Dump(Stream *s) const {
+ DumpWithLevel(s, lldb::eDescriptionLevelBrief);
}
-void
-WatchpointList::DumpWithLevel (Stream *s, lldb::DescriptionLevel description_level) const
-{
- std::lock_guard<std::recursive_mutex> guard(m_mutex);
- s->Printf("%p: ", static_cast<const void*>(this));
- //s->Indent();
- s->Printf("WatchpointList with %" PRIu64 " Watchpoints:\n",
- (uint64_t)m_watchpoints.size());
- s->IndentMore();
- wp_collection::const_iterator pos, end = m_watchpoints.end();
- for (pos = m_watchpoints.begin(); pos != end; ++pos)
- (*pos)->DumpWithLevel(s, description_level);
- s->IndentLess();
+void WatchpointList::DumpWithLevel(
+ Stream *s, lldb::DescriptionLevel description_level) const {
+ std::lock_guard<std::recursive_mutex> guard(m_mutex);
+ s->Printf("%p: ", static_cast<const void *>(this));
+ // s->Indent();
+ s->Printf("WatchpointList with %" PRIu64 " Watchpoints:\n",
+ (uint64_t)m_watchpoints.size());
+ s->IndentMore();
+ wp_collection::const_iterator pos, end = m_watchpoints.end();
+ for (pos = m_watchpoints.begin(); pos != end; ++pos)
+ (*pos)->DumpWithLevel(s, description_level);
+ s->IndentLess();
}
-const WatchpointSP
-WatchpointList::FindByAddress (lldb::addr_t addr) const
-{
- WatchpointSP wp_sp;
- std::lock_guard<std::recursive_mutex> guard(m_mutex);
- if (!m_watchpoints.empty())
- {
- wp_collection::const_iterator pos, end = m_watchpoints.end();
- for (pos = m_watchpoints.begin(); pos != end; ++pos)
- {
- lldb::addr_t wp_addr = (*pos)->GetLoadAddress();
- uint32_t wp_bytesize = (*pos)->GetByteSize();
- if ((wp_addr <= addr) && ((wp_addr + wp_bytesize) > addr))
- {
- wp_sp = *pos;
- break;
- }
- }
+const WatchpointSP WatchpointList::FindByAddress(lldb::addr_t addr) const {
+ WatchpointSP wp_sp;
+ std::lock_guard<std::recursive_mutex> guard(m_mutex);
+ if (!m_watchpoints.empty()) {
+ wp_collection::const_iterator pos, end = m_watchpoints.end();
+ for (pos = m_watchpoints.begin(); pos != end; ++pos) {
+ lldb::addr_t wp_addr = (*pos)->GetLoadAddress();
+ uint32_t wp_bytesize = (*pos)->GetByteSize();
+ if ((wp_addr <= addr) && ((wp_addr + wp_bytesize) > addr)) {
+ wp_sp = *pos;
+ break;
+ }
}
+ }
- return wp_sp;
+ return wp_sp;
}
-const WatchpointSP
-WatchpointList::FindBySpec (std::string spec) const
-{
- WatchpointSP wp_sp;
- std::lock_guard<std::recursive_mutex> guard(m_mutex);
- if (!m_watchpoints.empty())
- {
- wp_collection::const_iterator pos, end = m_watchpoints.end();
- for (pos = m_watchpoints.begin(); pos != end; ++pos)
- if ((*pos)->GetWatchSpec() == spec) {
- wp_sp = *pos;
- break;
- }
- }
+const WatchpointSP WatchpointList::FindBySpec(std::string spec) const {
+ WatchpointSP wp_sp;
+ std::lock_guard<std::recursive_mutex> guard(m_mutex);
+ if (!m_watchpoints.empty()) {
+ wp_collection::const_iterator pos, end = m_watchpoints.end();
+ for (pos = m_watchpoints.begin(); pos != end; ++pos)
+ if ((*pos)->GetWatchSpec() == spec) {
+ wp_sp = *pos;
+ break;
+ }
+ }
- return wp_sp;
+ return wp_sp;
}
-class WatchpointIDMatches
-{
+class WatchpointIDMatches {
public:
- WatchpointIDMatches (lldb::watch_id_t watch_id) :
- m_watch_id(watch_id)
- {
- }
+ WatchpointIDMatches(lldb::watch_id_t watch_id) : m_watch_id(watch_id) {}
- bool operator() (const WatchpointSP &wp) const
- {
- return m_watch_id == wp->GetID();
- }
+ bool operator()(const WatchpointSP &wp) const {
+ return m_watch_id == wp->GetID();
+ }
private:
- const lldb::watch_id_t m_watch_id;
+ const lldb::watch_id_t m_watch_id;
};
WatchpointList::wp_collection::iterator
-WatchpointList::GetIDIterator (lldb::watch_id_t watch_id)
-{
- return std::find_if(m_watchpoints.begin(), m_watchpoints.end(), // Search full range
- WatchpointIDMatches(watch_id)); // Predicate
+WatchpointList::GetIDIterator(lldb::watch_id_t watch_id) {
+ return std::find_if(m_watchpoints.begin(),
+ m_watchpoints.end(), // Search full range
+ WatchpointIDMatches(watch_id)); // Predicate
}
WatchpointList::wp_collection::const_iterator
-WatchpointList::GetIDConstIterator (lldb::watch_id_t watch_id) const
-{
- return std::find_if(m_watchpoints.begin(), m_watchpoints.end(), // Search full range
- WatchpointIDMatches(watch_id)); // Predicate
+WatchpointList::GetIDConstIterator(lldb::watch_id_t watch_id) const {
+ return std::find_if(m_watchpoints.begin(),
+ m_watchpoints.end(), // Search full range
+ WatchpointIDMatches(watch_id)); // Predicate
}
-WatchpointSP
-WatchpointList::FindByID (lldb::watch_id_t watch_id) const
-{
- WatchpointSP wp_sp;
- std::lock_guard<std::recursive_mutex> guard(m_mutex);
- wp_collection::const_iterator pos = GetIDConstIterator(watch_id);
- if (pos != m_watchpoints.end())
- wp_sp = *pos;
+WatchpointSP WatchpointList::FindByID(lldb::watch_id_t watch_id) const {
+ WatchpointSP wp_sp;
+ std::lock_guard<std::recursive_mutex> guard(m_mutex);
+ wp_collection::const_iterator pos = GetIDConstIterator(watch_id);
+ if (pos != m_watchpoints.end())
+ wp_sp = *pos;
- return wp_sp;
+ return wp_sp;
}
-lldb::watch_id_t
-WatchpointList::FindIDByAddress (lldb::addr_t addr)
-{
- WatchpointSP wp_sp = FindByAddress (addr);
- if (wp_sp)
- {
- return wp_sp->GetID();
- }
- return LLDB_INVALID_WATCH_ID;
+lldb::watch_id_t WatchpointList::FindIDByAddress(lldb::addr_t addr) {
+ WatchpointSP wp_sp = FindByAddress(addr);
+ if (wp_sp) {
+ return wp_sp->GetID();
+ }
+ return LLDB_INVALID_WATCH_ID;
}
-lldb::watch_id_t
-WatchpointList::FindIDBySpec (std::string spec)
-{
- WatchpointSP wp_sp = FindBySpec (spec);
- if (wp_sp)
- {
- return wp_sp->GetID();
- }
- return LLDB_INVALID_WATCH_ID;
+lldb::watch_id_t WatchpointList::FindIDBySpec(std::string spec) {
+ WatchpointSP wp_sp = FindBySpec(spec);
+ if (wp_sp) {
+ return wp_sp->GetID();
+ }
+ return LLDB_INVALID_WATCH_ID;
}
-WatchpointSP
-WatchpointList::GetByIndex (uint32_t i)
-{
- std::lock_guard<std::recursive_mutex> guard(m_mutex);
- WatchpointSP wp_sp;
- if (i < m_watchpoints.size())
- {
- wp_collection::const_iterator pos = m_watchpoints.begin();
- std::advance(pos, i);
- wp_sp = *pos;
- }
- return wp_sp;
+WatchpointSP WatchpointList::GetByIndex(uint32_t i) {
+ std::lock_guard<std::recursive_mutex> guard(m_mutex);
+ WatchpointSP wp_sp;
+ if (i < m_watchpoints.size()) {
+ wp_collection::const_iterator pos = m_watchpoints.begin();
+ std::advance(pos, i);
+ wp_sp = *pos;
+ }
+ return wp_sp;
}
-const WatchpointSP
-WatchpointList::GetByIndex (uint32_t i) const
-{
- std::lock_guard<std::recursive_mutex> guard(m_mutex);
- WatchpointSP wp_sp;
- if (i < m_watchpoints.size())
- {
- wp_collection::const_iterator pos = m_watchpoints.begin();
- std::advance(pos, i);
- wp_sp = *pos;
- }
- return wp_sp;
+const WatchpointSP WatchpointList::GetByIndex(uint32_t i) const {
+ std::lock_guard<std::recursive_mutex> guard(m_mutex);
+ WatchpointSP wp_sp;
+ if (i < m_watchpoints.size()) {
+ wp_collection::const_iterator pos = m_watchpoints.begin();
+ std::advance(pos, i);
+ wp_sp = *pos;
+ }
+ return wp_sp;
}
-std::vector<lldb::watch_id_t>
-WatchpointList::GetWatchpointIDs() const
-{
- std::vector<lldb::watch_id_t> IDs;
- wp_collection::const_iterator pos, end = m_watchpoints.end();
- for (pos = m_watchpoints.begin(); pos != end; ++pos)
- IDs.push_back((*pos)->GetID());
- return IDs;
+std::vector<lldb::watch_id_t> WatchpointList::GetWatchpointIDs() const {
+ std::vector<lldb::watch_id_t> IDs;
+ wp_collection::const_iterator pos, end = m_watchpoints.end();
+ for (pos = m_watchpoints.begin(); pos != end; ++pos)
+ IDs.push_back((*pos)->GetID());
+ return IDs;
}
-bool
-WatchpointList::Remove (lldb::watch_id_t watch_id, bool notify)
-{
- std::lock_guard<std::recursive_mutex> guard(m_mutex);
- wp_collection::iterator pos = GetIDIterator(watch_id);
- if (pos != m_watchpoints.end())
- {
- WatchpointSP wp_sp = *pos;
- if (notify)
- {
- if (wp_sp->GetTarget().EventTypeHasListeners(Target::eBroadcastBitWatchpointChanged))
- wp_sp->GetTarget().BroadcastEvent (Target::eBroadcastBitWatchpointChanged,
- new Watchpoint::WatchpointEventData (eWatchpointEventTypeRemoved, wp_sp));
- }
- m_watchpoints.erase(pos);
- return true;
+bool WatchpointList::Remove(lldb::watch_id_t watch_id, bool notify) {
+ std::lock_guard<std::recursive_mutex> guard(m_mutex);
+ wp_collection::iterator pos = GetIDIterator(watch_id);
+ if (pos != m_watchpoints.end()) {
+ WatchpointSP wp_sp = *pos;
+ if (notify) {
+ if (wp_sp->GetTarget().EventTypeHasListeners(
+ Target::eBroadcastBitWatchpointChanged))
+ wp_sp->GetTarget().BroadcastEvent(
+ Target::eBroadcastBitWatchpointChanged,
+ new Watchpoint::WatchpointEventData(eWatchpointEventTypeRemoved,
+ wp_sp));
}
- return false;
+ m_watchpoints.erase(pos);
+ return true;
+ }
+ return false;
}
-uint32_t
-WatchpointList::GetHitCount () const
-{
- uint32_t hit_count = 0;
- std::lock_guard<std::recursive_mutex> guard(m_mutex);
- wp_collection::const_iterator pos, end = m_watchpoints.end();
- for (pos = m_watchpoints.begin(); pos != end; ++pos)
- hit_count += (*pos)->GetHitCount();
- return hit_count;
+uint32_t WatchpointList::GetHitCount() const {
+ uint32_t hit_count = 0;
+ std::lock_guard<std::recursive_mutex> guard(m_mutex);
+ wp_collection::const_iterator pos, end = m_watchpoints.end();
+ for (pos = m_watchpoints.begin(); pos != end; ++pos)
+ hit_count += (*pos)->GetHitCount();
+ return hit_count;
}
-bool
-WatchpointList::ShouldStop (StoppointCallbackContext *context, lldb::watch_id_t watch_id)
-{
-
- WatchpointSP wp_sp = FindByID (watch_id);
- if (wp_sp)
- {
- // Let the Watchpoint decide if it should stop here (could not have
- // reached it's target hit count yet, or it could have a callback
- // that decided it shouldn't stop.
- return wp_sp->ShouldStop (context);
- }
- // We should stop here since this Watchpoint isn't valid anymore or it
- // doesn't exist.
- return true;
+bool WatchpointList::ShouldStop(StoppointCallbackContext *context,
+ lldb::watch_id_t watch_id) {
+
+ WatchpointSP wp_sp = FindByID(watch_id);
+ if (wp_sp) {
+ // Let the Watchpoint decide if it should stop here (could not have
+ // reached it's target hit count yet, or it could have a callback
+ // that decided it shouldn't stop.
+ return wp_sp->ShouldStop(context);
+ }
+ // We should stop here since this Watchpoint isn't valid anymore or it
+ // doesn't exist.
+ return true;
}
-void
-WatchpointList::GetDescription (Stream *s, lldb::DescriptionLevel level)
-{
- std::lock_guard<std::recursive_mutex> guard(m_mutex);
- wp_collection::iterator pos, end = m_watchpoints.end();
+void WatchpointList::GetDescription(Stream *s, lldb::DescriptionLevel level) {
+ std::lock_guard<std::recursive_mutex> guard(m_mutex);
+ wp_collection::iterator pos, end = m_watchpoints.end();
- for (pos = m_watchpoints.begin(); pos != end; ++pos)
- {
- s->Printf(" ");
- (*pos)->Dump(s);
- }
+ for (pos = m_watchpoints.begin(); pos != end; ++pos) {
+ s->Printf(" ");
+ (*pos)->Dump(s);
+ }
}
-void
-WatchpointList::SetEnabledAll (bool enabled)
-{
- std::lock_guard<std::recursive_mutex> guard(m_mutex);
+void WatchpointList::SetEnabledAll(bool enabled) {
+ std::lock_guard<std::recursive_mutex> guard(m_mutex);
- wp_collection::iterator pos, end = m_watchpoints.end();
- for (pos = m_watchpoints.begin(); pos != end; ++pos)
- (*pos)->SetEnabled (enabled);
+ wp_collection::iterator pos, end = m_watchpoints.end();
+ for (pos = m_watchpoints.begin(); pos != end; ++pos)
+ (*pos)->SetEnabled(enabled);
}
-void
-WatchpointList::RemoveAll (bool notify)
-{
- std::lock_guard<std::recursive_mutex> guard(m_mutex);
- if (notify)
+void WatchpointList::RemoveAll(bool notify) {
+ std::lock_guard<std::recursive_mutex> guard(m_mutex);
+ if (notify) {
+
{
-
- {
- wp_collection::iterator pos, end = m_watchpoints.end();
- for (pos = m_watchpoints.begin(); pos != end; ++pos)
- {
- if ((*pos)->GetTarget().EventTypeHasListeners(Target::eBroadcastBitBreakpointChanged))
- {
- (*pos)->GetTarget().BroadcastEvent (Target::eBroadcastBitWatchpointChanged,
- new Watchpoint::WatchpointEventData (eWatchpointEventTypeRemoved,
- *pos));
- }
- }
+ wp_collection::iterator pos, end = m_watchpoints.end();
+ for (pos = m_watchpoints.begin(); pos != end; ++pos) {
+ if ((*pos)->GetTarget().EventTypeHasListeners(
+ Target::eBroadcastBitBreakpointChanged)) {
+ (*pos)->GetTarget().BroadcastEvent(
+ Target::eBroadcastBitWatchpointChanged,
+ new Watchpoint::WatchpointEventData(eWatchpointEventTypeRemoved,
+ *pos));
}
+ }
}
- m_watchpoints.clear();
+ }
+ m_watchpoints.clear();
}
-void
-WatchpointList::GetListMutex(std::unique_lock<std::recursive_mutex> &lock)
-{
- lock = std::unique_lock<std::recursive_mutex>(m_mutex);
+void WatchpointList::GetListMutex(
+ std::unique_lock<std::recursive_mutex> &lock) {
+ lock = std::unique_lock<std::recursive_mutex>(m_mutex);
}