summaryrefslogtreecommitdiffstats
path: root/lldb/source/Symbol/Block.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Symbol/Block.cpp')
-rw-r--r--lldb/source/Symbol/Block.cpp71
1 files changed, 33 insertions, 38 deletions
diff --git a/lldb/source/Symbol/Block.cpp b/lldb/source/Symbol/Block.cpp
index 8256aa7e199..c0b9ac667e0 100644
--- a/lldb/source/Symbol/Block.cpp
+++ b/lldb/source/Symbol/Block.cpp
@@ -24,7 +24,7 @@ Block::Block(lldb::user_id_t uid) :
m_children (),
m_ranges (),
m_inlineInfoSP (),
- m_variables (),
+ m_variable_list_sp (),
m_parsed_block_info (false),
m_parsed_block_variables (false),
m_parsed_child_blocks (false)
@@ -104,9 +104,9 @@ Block::Dump(Stream *s, addr_t base_addr, int32_t depth, bool show_context) const
{
s->IndentMore();
- if (m_variables.get())
+ if (m_variable_list_sp.get())
{
- m_variables->Dump(s, show_context);
+ m_variable_list_sp->Dump(s, show_context);
}
for (Block *child_block = GetFirstChild(); child_block != NULL; child_block = child_block->GetSibling())
@@ -137,7 +137,7 @@ Block::FindBlockByID (user_id_t block_id)
}
void
-Block::CalculateSymbolContext(SymbolContext* sc)
+Block::CalculateSymbolContext (SymbolContext* sc)
{
if (m_parent_scope)
m_parent_scope->CalculateSymbolContext(sc);
@@ -149,7 +149,7 @@ Block::DumpStopContext (Stream *s, const SymbolContext *sc)
{
Block* parent_block = GetParent();
- InlineFunctionInfo* inline_info = InlinedFunctionInfo ();
+ const InlineFunctionInfo* inline_info = InlinedFunctionInfo ();
if (inline_info)
{
const Declaration &call_site = inline_info->GetCallSite();
@@ -226,7 +226,15 @@ Block::GetParent () const
}
Block *
-Block::GetInlinedParent () const
+Block::GetContainingInlinedBlock ()
+{
+ if (InlinedFunctionInfo())
+ return this;
+ return GetInlinedParent ();
+}
+
+Block *
+Block::GetInlinedParent ()
{
Block *parent_block = GetParent ();
if (parent_block)
@@ -241,6 +249,20 @@ Block::GetInlinedParent () const
bool
+Block::GetRangeContainingOffset (const addr_t offset, VMRange &range)
+{
+ uint32_t range_idx = VMRange::FindRangeIndexThatContainsValue (m_ranges, offset);
+ if (range_idx < m_ranges.size())
+ {
+ range = m_ranges[range_idx];
+ return true;
+ }
+ range.Clear();
+ return false;
+}
+
+
+bool
Block::GetRangeContainingAddress (const Address& addr, AddressRange &range)
{
SymbolContext sc;
@@ -278,18 +300,6 @@ Block::AddRange(addr_t start_offset, addr_t end_offset)
m_ranges.back().Reset(start_offset, end_offset);
}
-InlineFunctionInfo*
-Block::InlinedFunctionInfo ()
-{
- return m_inlineInfoSP.get();
-}
-
-const InlineFunctionInfo*
-Block::InlinedFunctionInfo () const
-{
- return m_inlineInfoSP.get();
-}
-
// Return the current number of bytes that this object occupies in memory
size_t
Block::MemorySize() const
@@ -297,20 +307,12 @@ Block::MemorySize() const
size_t mem_size = sizeof(Block) + m_ranges.size() * sizeof(VMRange);
if (m_inlineInfoSP.get())
mem_size += m_inlineInfoSP->MemorySize();
- if (m_variables.get())
- mem_size += m_variables->MemorySize();
+ if (m_variable_list_sp.get())
+ mem_size += m_variable_list_sp->MemorySize();
return mem_size;
}
-Block *
-Block::GetFirstChild () const
-{
- if (m_children.empty())
- return NULL;
- return m_children.front().get();
-}
-
void
Block::AddChild(const BlockSP &child_block_sp)
{
@@ -343,7 +345,7 @@ Block::GetVariableList (bool get_child_variables, bool can_create)
VariableListSP variable_list_sp;
if (m_parsed_block_variables == false)
{
- if (m_variables.get() == NULL && can_create)
+ if (m_variable_list_sp.get() == NULL && can_create)
{
m_parsed_block_variables = true;
SymbolContext sc;
@@ -353,11 +355,11 @@ Block::GetVariableList (bool get_child_variables, bool can_create)
}
}
- if (m_variables.get())
+ if (m_variable_list_sp.get())
{
variable_list_sp.reset(new VariableList());
if (variable_list_sp.get())
- variable_list_sp->AddVariables(m_variables.get());
+ variable_list_sp->AddVariables(m_variable_list_sp.get());
if (get_child_variables)
{
@@ -406,13 +408,6 @@ Block::AppendVariables
return num_variables_added;
}
-
-void
-Block::SetVariableList(VariableListSP& variables)
-{
- m_variables = variables;
-}
-
void
Block::SetBlockInfoHasBeenParsed (bool b, bool set_children)
{
OpenPOWER on IntegriCloud