From 0712f46f4f59abc4d5fb8629d8495f4d5b707600 Mon Sep 17 00:00:00 2001 From: Sean Callanan Date: Tue, 29 Nov 2011 22:03:21 +0000 Subject: [PATCH] Modified ClangExpressionDeclMap to use existing ValueObjects when creating variables referring to live data rather than constructing ValueObjectConstResults. llvm-svn: 145437 --- .../lldb/Expression/ClangExpressionDeclMap.h | 4 ++++ lldb/source/Expression/ClangExpressionDeclMap.cpp | 14 ++++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/lldb/include/lldb/Expression/ClangExpressionDeclMap.h b/lldb/include/lldb/Expression/ClangExpressionDeclMap.h index c30014f37533..995a21069b1d 100644 --- a/lldb/include/lldb/Expression/ClangExpressionDeclMap.h +++ b/lldb/include/lldb/Expression/ClangExpressionDeclMap.h @@ -909,10 +909,14 @@ private: /// /// @param[in] var /// The LLDB Variable that needs a Decl. + /// + /// @param[in] valobj + /// The LLDB ValueObject for that variable. //------------------------------------------------------------------ void AddOneVariable (NameSearchContext &context, lldb::VariableSP var, + lldb::ValueObjectSP valobj, unsigned int current_id); //------------------------------------------------------------------ diff --git a/lldb/source/Expression/ClangExpressionDeclMap.cpp b/lldb/source/Expression/ClangExpressionDeclMap.cpp index 0ca880859116..6da3e44fe94e 100644 --- a/lldb/source/Expression/ClangExpressionDeclMap.cpp +++ b/lldb/source/Expression/ClangExpressionDeclMap.cpp @@ -2507,7 +2507,7 @@ ClangExpressionDeclMap::FindExternalVisibleDecls (NameSearchContext &context, // If we found a variable in scope, no need to pull up function names if (err.Success() && var != NULL) { - AddOneVariable(context, var, current_id); + AddOneVariable(context, var, valobj, current_id); context.m_found.variable = true; return; } @@ -2522,7 +2522,8 @@ ClangExpressionDeclMap::FindExternalVisibleDecls (NameSearchContext &context, if (var) { - AddOneVariable(context, var, current_id); + valobj = frame->TrackGlobalVariable(var, eNoDynamicValues); + AddOneVariable(context, var, valobj, current_id); context.m_found.variable = true; } } @@ -2728,7 +2729,7 @@ ClangExpressionDeclMap::GetVariableValue } void -ClangExpressionDeclMap::AddOneVariable (NameSearchContext &context, VariableSP var, unsigned int current_id) +ClangExpressionDeclMap::AddOneVariable (NameSearchContext &context, VariableSP var, ValueObjectSP valobj, unsigned int current_id) { assert (m_parser_vars.get()); @@ -2757,11 +2758,8 @@ ClangExpressionDeclMap::AddOneVariable (NameSearchContext &context, VariableSP v std::string decl_name(context.m_decl_name.getAsString()); ConstString entity_name(decl_name.c_str()); - ClangExpressionVariableSP entity(m_found_entities.CreateVariable (m_parser_vars->m_exe_ctx->GetBestExecutionContextScope (), - entity_name, - ut, - m_parser_vars->m_target_info.byte_order, - m_parser_vars->m_target_info.address_byte_size)); + ClangExpressionVariableSP entity(m_found_entities.CreateVariable (valobj)); + assert (entity.get()); entity->EnableParserVars(); entity->m_parser_vars->m_parser_type = pt;