summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/ExpressionParser
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins/ExpressionParser')
-rw-r--r--lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp62
-rw-r--r--lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.cpp15
-rw-r--r--lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h40
-rw-r--r--lldb/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.cpp8
-rw-r--r--lldb/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.h8
5 files changed, 58 insertions, 75 deletions
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<ClangExpressionVariable>(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()));
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.cpp
index f78ee3a8f62..908546b3ecd 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.cpp
@@ -53,6 +53,21 @@ ClangExpressionVariable::ClangExpressionVariable (const lldb::ValueObjectSP &val
m_frozen_sp = valobj_sp;
}
+ClangExpressionVariable::ClangExpressionVariable(ExecutionContextScope *exe_scope,
+ const ConstString &name,
+ const TypeFromUser& user_type,
+ lldb::ByteOrder byte_order,
+ uint32_t addr_byte_size) :
+ ExpressionVariable(LLVMCastKind::eKindClang),
+ m_parser_vars(),
+ m_jit_vars()
+{
+ m_flags = EVNone;
+ m_frozen_sp = ValueObjectConstResult::Create (exe_scope, byte_order, addr_byte_size);
+ SetName (name);
+ SetCompilerType (user_type);
+}
+
TypeFromUser
ClangExpressionVariable::GetTypeFromUser()
{
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h
index c38e6c040a7..a4596148f6c 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionVariable.h
@@ -73,6 +73,12 @@ public:
uint16_t flags = EVNone);
ClangExpressionVariable(const lldb::ValueObjectSP &valobj_sp);
+
+ ClangExpressionVariable(ExecutionContextScope *exe_scope,
+ const ConstString &name,
+ const TypeFromUser& user_type,
+ lldb::ByteOrder byte_order,
+ uint32_t addr_byte_size);
//----------------------------------------------------------------------
/// Utility functions for dealing with ExpressionVariableLists in Clang-specific ways
@@ -105,40 +111,6 @@ public:
}
return nullptr;
}
-
- static ClangExpressionVariable *
- CreateVariableInList (ExpressionVariableList &list, ExecutionContextScope *exe_scope, lldb::ByteOrder byte_order, uint32_t addr_byte_size)
- {
- ClangExpressionVariable *clang_var = new ClangExpressionVariable(exe_scope, byte_order, addr_byte_size);
- lldb::ExpressionVariableSP var_sp(clang_var);
- list.AddVariable(var_sp);
- return clang_var;
- }
-
- static ClangExpressionVariable *
- CreateVariableInList (ExpressionVariableList &list, const lldb::ValueObjectSP &valobj_sp)
- {
- ClangExpressionVariable *clang_var = new ClangExpressionVariable(valobj_sp);
- lldb::ExpressionVariableSP var_sp(clang_var);
- list.AddVariable(var_sp);
- return clang_var;
- }
-
- static ClangExpressionVariable *
- CreateVariableInList (ExpressionVariableList &list,
- ExecutionContextScope *exe_scope,
- const ConstString &name,
- const TypeFromUser& user_type,
- lldb::ByteOrder byte_order,
- uint32_t addr_byte_size)
- {
- ClangExpressionVariable *clang_var = new ClangExpressionVariable(exe_scope, byte_order, addr_byte_size);
- lldb::ExpressionVariableSP var_sp(clang_var);
- clang_var->SetName (name);
- clang_var->SetCompilerType (user_type);
- list.AddVariable(var_sp);
- return clang_var;
- }
//----------------------------------------------------------------------
/// If the variable contains its own data, make a Value point at it.
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.cpp
index cadccecffeb..9bf9d435d7e 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.cpp
@@ -28,17 +28,17 @@ ClangPersistentVariables::ClangPersistentVariables () :
ExpressionVariableSP
ClangPersistentVariables::CreatePersistentVariable (const lldb::ValueObjectSP &valobj_sp)
{
- return ClangExpressionVariable::CreateVariableInList(*this, valobj_sp)->shared_from_this();
+ return AddNewlyConstructedVariable(new ClangExpressionVariable(valobj_sp));
}
-ClangExpressionVariable *
+ExpressionVariableSP
ClangPersistentVariables::CreatePersistentVariable (ExecutionContextScope *exe_scope,
const ConstString &name,
- const TypeFromUser& user_type,
+ const CompilerType& compiler_type,
lldb::ByteOrder byte_order,
uint32_t addr_byte_size)
{
- return ClangExpressionVariable::CreateVariableInList(*this, exe_scope, name, user_type, byte_order, addr_byte_size);
+ return AddNewlyConstructedVariable(new ClangExpressionVariable(exe_scope, name, compiler_type, byte_order, addr_byte_size));
}
void
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.h b/lldb/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.h
index 1a486aeb77b..daee1b86c30 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.h
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.h
@@ -48,14 +48,14 @@ public:
}
lldb::ExpressionVariableSP
- CreatePersistentVariable (const lldb::ValueObjectSP &valobj_sp);
+ CreatePersistentVariable (const lldb::ValueObjectSP &valobj_sp) override;
- ClangExpressionVariable *
+ lldb::ExpressionVariableSP
CreatePersistentVariable (ExecutionContextScope *exe_scope,
const ConstString &name,
- const TypeFromUser& user_type,
+ const CompilerType& compiler_type,
lldb::ByteOrder byte_order,
- uint32_t addr_byte_size);
+ uint32_t addr_byte_size) override;
//----------------------------------------------------------------------
/// Return the next entry in the sequence of strings "$0", "$1", ... for
OpenPOWER on IntegriCloud