summaryrefslogtreecommitdiffstats
path: root/lldb/source/Target/Process.cpp
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2011-06-29 19:42:28 +0000
committerJim Ingham <jingham@apple.com>2011-06-29 19:42:28 +0000
commit20c771998b59d485e1857f72730e41d848dad555 (patch)
tree4f07f540c91235a47a307438e3b2328d9585af6a /lldb/source/Target/Process.cpp
parente44914178866bcf1ecee169d5e29fe93be7a0d70 (diff)
downloadbcm5719-llvm-20c771998b59d485e1857f72730e41d848dad555.tar.gz
bcm5719-llvm-20c771998b59d485e1857f72730e41d848dad555.zip
Remove a few more places where we were iterating linearly over the Breakpoint Site's rather than
looking up what we needed by address, which is much faster. llvm-svn: 134090
Diffstat (limited to 'lldb/source/Target/Process.cpp')
-rw-r--r--lldb/source/Target/Process.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp
index 178d3c39856..756f9995080 100644
--- a/lldb/source/Target/Process.cpp
+++ b/lldb/source/Target/Process.cpp
@@ -1378,18 +1378,22 @@ Process::RemoveBreakpointOpcodesFromBuffer (addr_t bp_addr, size_t size, uint8_t
size_t opcode_offset;
size_t idx;
BreakpointSiteSP bp;
+ BreakpointSiteList bp_sites_in_range;
- for (idx = 0; (bp = m_breakpoint_site_list.GetByIndex(idx)) != NULL; ++idx)
+ if (m_breakpoint_site_list.FindInRange (bp_addr, bp_addr + size, bp_sites_in_range))
{
- if (bp->GetType() == BreakpointSite::eSoftware)
+ for (idx = 0; (bp = bp_sites_in_range.GetByIndex(idx)) != NULL; ++idx)
{
- if (bp->IntersectsRange(bp_addr, size, &intersect_addr, &intersect_size, &opcode_offset))
+ if (bp->GetType() == BreakpointSite::eSoftware)
{
- assert(bp_addr <= intersect_addr && intersect_addr < bp_addr + size);
- assert(bp_addr < intersect_addr + intersect_size && intersect_addr + intersect_size <= bp_addr + size);
- assert(opcode_offset + intersect_size <= bp->GetByteSize());
- size_t buf_offset = intersect_addr - bp_addr;
- ::memcpy(buf + buf_offset, bp->GetSavedOpcodeBytes() + opcode_offset, intersect_size);
+ if (bp->IntersectsRange(bp_addr, size, &intersect_addr, &intersect_size, &opcode_offset))
+ {
+ assert(bp_addr <= intersect_addr && intersect_addr < bp_addr + size);
+ assert(bp_addr < intersect_addr + intersect_size && intersect_addr + intersect_size <= bp_addr + size);
+ assert(opcode_offset + intersect_size <= bp->GetByteSize());
+ size_t buf_offset = intersect_addr - bp_addr;
+ ::memcpy(buf + buf_offset, bp->GetSavedOpcodeBytes() + opcode_offset, intersect_size);
+ }
}
}
}
OpenPOWER on IntegriCloud