From 9301ec11910dbb7fd13becd0e77b0a1faeff5915 Mon Sep 17 00:00:00 2001 From: Sean Callanan Date: Thu, 1 Oct 2015 23:07:06 +0000 Subject: Eliminated redundant "constructors" for ClangExpressionVariable. The ClangExpressionVariable::CreateVariableInList functions looked cute, but caused more confusion than they solved. I removed them, and instead made sure that there are adequate facilities for easily adding newly-constructed ExpressionVariables to lists. I also made some of the constructors that are common be generic, so that it's possible to construct expression variables from generic places (like the ABI and ValueObject) without having to know the specifics about the class. llvm-svn: 249095 --- .../Clang/ClangExpressionDeclMap.cpp | 62 ++++++++++------------ 1 file changed, 29 insertions(+), 33 deletions(-) (limited to 'lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp') diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp index 4356297acd9..3f0517f3c47 100644 --- a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp +++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp @@ -219,16 +219,14 @@ ClangExpressionDeclMap::AddPersistentVariable uint32_t offset = m_parser_vars->m_materializer->AddResultVariable(user_type, is_lvalue, m_keep_result_in_memory, err); - ClangExpressionVariable *var = ClangExpressionVariable::CreateVariableInList(m_found_entities, - exe_ctx.GetBestExecutionContextScope(), - name, - user_type, - m_parser_vars->m_target_info.byte_order, - m_parser_vars->m_target_info.address_byte_size); - - if (!var) - return false; + ClangExpressionVariable *var = new ClangExpressionVariable(exe_ctx.GetBestExecutionContextScope(), + name, + user_type, + m_parser_vars->m_target_info.byte_order, + m_parser_vars->m_target_info.address_byte_size); + m_found_entities.AddNewlyConstructedVariable(var); + var->EnableParserVars(GetParserID()); ClangExpressionVariable::ParserVars *parser_vars = var->GetParserVars(GetParserID()); @@ -268,11 +266,11 @@ ClangExpressionDeclMap::AddPersistentVariable if (!m_parser_vars->m_target_info.IsValid()) return false; - ClangExpressionVariable *var = m_parser_vars->m_persistent_vars->CreatePersistentVariable (exe_ctx.GetBestExecutionContextScope (), - name, - user_type, - m_parser_vars->m_target_info.byte_order, - m_parser_vars->m_target_info.address_byte_size); + ClangExpressionVariable *var = llvm::cast(m_parser_vars->m_persistent_vars->CreatePersistentVariable (exe_ctx.GetBestExecutionContextScope (), + name, + user_type, + m_parser_vars->m_target_info.byte_order, + m_parser_vars->m_target_info.address_byte_size).get()); if (!var) return false; @@ -1801,7 +1799,8 @@ ClangExpressionDeclMap::AddOneVariable (NameSearchContext &context, VariableSP v std::string decl_name(context.m_decl_name.getAsString()); ConstString entity_name(decl_name.c_str()); - ClangExpressionVariable *entity(ClangExpressionVariable::CreateVariableInList(m_found_entities, valobj)); + ClangExpressionVariable *entity(new ClangExpressionVariable(valobj)); + m_found_entities.AddNewlyConstructedVariable(entity); assert (entity); entity->EnableParserVars(GetParserID()); @@ -1879,14 +1878,13 @@ ClangExpressionDeclMap::AddOneGenericVariable(NameSearchContext &context, std::string decl_name(context.m_decl_name.getAsString()); ConstString entity_name(decl_name.c_str()); - ClangExpressionVariable *entity(ClangExpressionVariable::CreateVariableInList(m_found_entities, - m_parser_vars->m_exe_ctx.GetBestExecutionContextScope (), - entity_name, - user_type, - m_parser_vars->m_target_info.byte_order, - m_parser_vars->m_target_info.address_byte_size)); - assert (entity); - + ClangExpressionVariable *entity(new ClangExpressionVariable(m_parser_vars->m_exe_ctx.GetBestExecutionContextScope (), + entity_name, + user_type, + m_parser_vars->m_target_info.byte_order, + m_parser_vars->m_target_info.address_byte_size)); + m_found_entities.AddNewlyConstructedVariable(entity); + entity->EnableParserVars(GetParserID()); ClangExpressionVariable::ParserVars *parser_vars = entity->GetParserVars(GetParserID()); @@ -1995,11 +1993,10 @@ ClangExpressionDeclMap::AddOneRegister (NameSearchContext &context, NamedDecl *var_decl = context.AddVarDecl(parser_clang_type); - ClangExpressionVariable *entity(ClangExpressionVariable::CreateVariableInList(m_found_entities, - m_parser_vars->m_exe_ctx.GetBestExecutionContextScope(), - m_parser_vars->m_target_info.byte_order, - m_parser_vars->m_target_info.address_byte_size)); - assert (entity); + ClangExpressionVariable *entity(new ClangExpressionVariable(m_parser_vars->m_exe_ctx.GetBestExecutionContextScope(), + m_parser_vars->m_target_info.byte_order, + m_parser_vars->m_target_info.address_byte_size)); + m_found_entities.AddNewlyConstructedVariable(entity); std::string decl_name(context.m_decl_name.getAsString()); entity->SetName (ConstString (decl_name.c_str())); @@ -2104,11 +2101,10 @@ ClangExpressionDeclMap::AddOneFunction (NameSearchContext &context, lldb::addr_t load_addr = fun_address.GetCallableLoadAddress(target, is_indirect_function); - ClangExpressionVariable *entity(ClangExpressionVariable::CreateVariableInList (m_found_entities, - m_parser_vars->m_exe_ctx.GetBestExecutionContextScope (), - m_parser_vars->m_target_info.byte_order, - m_parser_vars->m_target_info.address_byte_size)); - assert (entity); + ClangExpressionVariable *entity(new ClangExpressionVariable (m_parser_vars->m_exe_ctx.GetBestExecutionContextScope (), + m_parser_vars->m_target_info.byte_order, + m_parser_vars->m_target_info.address_byte_size)); + m_found_entities.AddNewlyConstructedVariable(entity); std::string decl_name(context.m_decl_name.getAsString()); entity->SetName(ConstString(decl_name.c_str())); -- cgit v1.2.3