diff options
author | Sean Callanan <scallanan@apple.com> | 2015-09-04 20:49:51 +0000 |
---|---|---|
committer | Sean Callanan <scallanan@apple.com> | 2015-09-04 20:49:51 +0000 |
commit | bc8ac34e61960ac372cfbdc8a9c7ebe87df343b8 (patch) | |
tree | c65f757002e1b055ddb6ad857ef5431536477cb4 /lldb/source/Expression | |
parent | a72920410329779314264d9da990c27d405a3fc2 (diff) | |
download | bcm5719-llvm-bc8ac34e61960ac372cfbdc8a9c7ebe87df343b8.tar.gz bcm5719-llvm-bc8ac34e61960ac372cfbdc8a9c7ebe87df343b8.zip |
This patch separates the generic portion of ClangExpressionVariable, which
stores information about a variable that different parts of LLDB use, from the
compiler-specific portion that only the expression parser cares about.
http://reviews.llvm.org/D12602
llvm-svn: 246871
Diffstat (limited to 'lldb/source/Expression')
-rw-r--r-- | lldb/source/Expression/ClangExpressionDeclMap.cpp | 149 | ||||
-rw-r--r-- | lldb/source/Expression/ClangPersistentVariables.cpp | 18 | ||||
-rw-r--r-- | lldb/source/Expression/ClangUserExpression.cpp | 6 | ||||
-rw-r--r-- | lldb/source/Expression/ExpressionVariable.cpp | 21 | ||||
-rw-r--r-- | lldb/source/Expression/Materializer.cpp | 31 |
5 files changed, 122 insertions, 103 deletions
diff --git a/lldb/source/Expression/ClangExpressionDeclMap.cpp b/lldb/source/Expression/ClangExpressionDeclMap.cpp index 4e12c6642c8..cba1122038a 100644 --- a/lldb/source/Expression/ClangExpressionDeclMap.cpp +++ b/lldb/source/Expression/ClangExpressionDeclMap.cpp @@ -134,18 +134,18 @@ ClangExpressionDeclMap::DidParse() entity_index < num_entities; ++entity_index) { - ClangExpressionVariableSP var_sp(m_found_entities.GetVariableAtIndex(entity_index)); + ExpressionVariableSP var_sp(m_found_entities.GetVariableAtIndex(entity_index)); if (var_sp) - var_sp->DisableParserVars(GetParserID()); + var_sp->AsClangExpressionVariable()->DisableParserVars(GetParserID()); } for (size_t pvar_index = 0, num_pvars = m_parser_vars->m_persistent_vars->GetSize(); pvar_index < num_pvars; ++pvar_index) { - ClangExpressionVariableSP pvar_sp(m_parser_vars->m_persistent_vars->GetVariableAtIndex(pvar_index)); + ExpressionVariableSP pvar_sp(m_parser_vars->m_persistent_vars->GetVariableAtIndex(pvar_index)); if (pvar_sp) - pvar_sp->DisableParserVars(GetParserID()); + pvar_sp->AsClangExpressionVariable()->DisableParserVars(GetParserID()); } DisableParserVars(); @@ -212,25 +212,26 @@ ClangExpressionDeclMap::AddPersistentVariable uint32_t offset = m_parser_vars->m_materializer->AddResultVariable(user_type, is_lvalue, m_keep_result_in_memory, err); - ClangExpressionVariableSP var_sp = m_found_entities.CreateVariable(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 = 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_sp) + if (!var) return false; - var_sp->EnableParserVars(GetParserID()); + var->EnableParserVars(GetParserID()); - ClangExpressionVariable::ParserVars *parser_vars = var_sp->GetParserVars(GetParserID()); + ClangExpressionVariable::ParserVars *parser_vars = var->GetParserVars(GetParserID()); parser_vars->m_named_decl = decl; parser_vars->m_parser_type = parser_type; - var_sp->EnableJITVars(GetParserID()); + var->EnableJITVars(GetParserID()); - ClangExpressionVariable::JITVars *jit_vars = var_sp->GetJITVars(GetParserID()); + ClangExpressionVariable::JITVars *jit_vars = var->GetJITVars(GetParserID()); jit_vars->m_offset = offset; @@ -260,43 +261,43 @@ ClangExpressionDeclMap::AddPersistentVariable if (!m_parser_vars->m_target_info.IsValid()) return false; - ClangExpressionVariableSP var_sp = 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 = 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); - if (!var_sp) + if (!var) return false; - var_sp->m_frozen_sp->SetHasCompleteType(); + var->m_frozen_sp->SetHasCompleteType(); if (is_result) - var_sp->m_flags |= ClangExpressionVariable::EVNeedsFreezeDry; + var->m_flags |= ClangExpressionVariable::EVNeedsFreezeDry; else - var_sp->m_flags |= ClangExpressionVariable::EVKeepInTarget; // explicitly-declared persistent variables should persist + var->m_flags |= ClangExpressionVariable::EVKeepInTarget; // explicitly-declared persistent variables should persist if (is_lvalue) { - var_sp->m_flags |= ClangExpressionVariable::EVIsProgramReference; + var->m_flags |= ClangExpressionVariable::EVIsProgramReference; } else { - var_sp->m_flags |= ClangExpressionVariable::EVIsLLDBAllocated; - var_sp->m_flags |= ClangExpressionVariable::EVNeedsAllocation; + var->m_flags |= ClangExpressionVariable::EVIsLLDBAllocated; + var->m_flags |= ClangExpressionVariable::EVNeedsAllocation; } if (m_keep_result_in_memory) { - var_sp->m_flags |= ClangExpressionVariable::EVKeepInTarget; + var->m_flags |= ClangExpressionVariable::EVKeepInTarget; } if (log) - log->Printf("Created persistent variable with flags 0x%hx", var_sp->m_flags); + log->Printf("Created persistent variable with flags 0x%hx", var->m_flags); - var_sp->EnableParserVars(GetParserID()); + var->EnableParserVars(GetParserID()); - ClangExpressionVariable::ParserVars *parser_vars = var_sp->GetParserVars(GetParserID()); + ClangExpressionVariable::ParserVars *parser_vars = var->GetParserVars(GetParserID()); parser_vars->m_named_decl = decl; parser_vars->m_parser_type = parser_type; @@ -323,33 +324,33 @@ ClangExpressionDeclMap::AddValueToStruct m_struct_vars->m_struct_laid_out = false; - if (m_struct_members.GetVariable(decl, GetParserID())) + if (ClangExpressionVariable::FindVariableInList(m_struct_members, decl, GetParserID())) return true; - ClangExpressionVariableSP var_sp (m_found_entities.GetVariable(decl, GetParserID())); + ClangExpressionVariable *var(ClangExpressionVariable::FindVariableInList(m_found_entities, decl, GetParserID())); - if (!var_sp) + if (!var) { - var_sp = m_parser_vars->m_persistent_vars->GetVariable(decl, GetParserID()); + var = ClangExpressionVariable::FindVariableInList(*m_parser_vars->m_persistent_vars, decl, GetParserID()); is_persistent_variable = true; } - if (!var_sp) + if (!var) return false; if (log) log->Printf("Adding value for (NamedDecl*)%p [%s - %s] to the structure", static_cast<const void*>(decl), name.GetCString(), - var_sp->GetName().GetCString()); + var->GetName().GetCString()); // We know entity->m_parser_vars is valid because we used a parser variable // to find it - ClangExpressionVariable::ParserVars *parser_vars = var_sp->GetParserVars(GetParserID()); + ClangExpressionVariable::ParserVars *parser_vars = var->AsClangExpressionVariable()->GetParserVars(GetParserID()); parser_vars->m_llvm_value = value; - if (ClangExpressionVariable::JITVars *jit_vars = var_sp->GetJITVars(GetParserID())) + if (ClangExpressionVariable::JITVars *jit_vars = var->AsClangExpressionVariable()->GetJITVars(GetParserID())) { // We already laid this out; do not touch @@ -357,14 +358,14 @@ ClangExpressionDeclMap::AddValueToStruct log->Printf("Already placed at 0x%llx", (unsigned long long)jit_vars->m_offset); } - var_sp->EnableJITVars(GetParserID()); + var->AsClangExpressionVariable()->EnableJITVars(GetParserID()); - ClangExpressionVariable::JITVars *jit_vars = var_sp->GetJITVars(GetParserID()); + ClangExpressionVariable::JITVars *jit_vars = var->AsClangExpressionVariable()->GetJITVars(GetParserID()); jit_vars->m_alignment = alignment; jit_vars->m_size = size; - m_struct_members.AddVariable(var_sp); + m_struct_members.AddVariable(var->shared_from_this()); if (m_parser_vars->m_materializer) { @@ -374,13 +375,14 @@ ClangExpressionDeclMap::AddValueToStruct if (is_persistent_variable) { + ExpressionVariableSP var_sp(var->shared_from_this()); offset = m_parser_vars->m_materializer->AddPersistentVariable(var_sp, err); } else { if (const lldb_private::Symbol *sym = parser_vars->m_lldb_sym) offset = m_parser_vars->m_materializer->AddSymbol(*sym, err); - else if (const RegisterInfo *reg_info = var_sp->GetRegisterInfo()) + else if (const RegisterInfo *reg_info = var->GetRegisterInfo()) offset = m_parser_vars->m_materializer->AddRegister(*reg_info, err); else if (parser_vars->m_lldb_var) offset = m_parser_vars->m_materializer->AddVariable(parser_vars->m_lldb_var, err); @@ -452,13 +454,13 @@ ClangExpressionDeclMap::GetStructElement if (index >= m_struct_members.GetSize()) return false; - ClangExpressionVariableSP member_sp(m_struct_members.GetVariableAtIndex(index)); + ExpressionVariableSP member_sp(m_struct_members.GetVariableAtIndex(index)); if (!member_sp) return false; - ClangExpressionVariable::ParserVars *parser_vars = member_sp->GetParserVars(GetParserID()); - ClangExpressionVariable::JITVars *jit_vars = member_sp->GetJITVars(GetParserID()); + ClangExpressionVariable::ParserVars *parser_vars = member_sp->AsClangExpressionVariable()->GetParserVars(GetParserID()); + ClangExpressionVariable::JITVars *jit_vars = member_sp->AsClangExpressionVariable()->GetJITVars(GetParserID()); if (!parser_vars || !jit_vars || @@ -480,15 +482,15 @@ ClangExpressionDeclMap::GetFunctionInfo uint64_t &ptr ) { - ClangExpressionVariableSP entity_sp(m_found_entities.GetVariable(decl, GetParserID())); + ClangExpressionVariable *entity(ClangExpressionVariable::FindVariableInList(m_found_entities, decl, GetParserID())); - if (!entity_sp) + if (!entity) return false; // We know m_parser_vars is valid since we searched for the variable by // its NamedDecl - ClangExpressionVariable::ParserVars *parser_vars = entity_sp->GetParserVars(GetParserID()); + ClangExpressionVariable::ParserVars *parser_vars = entity->GetParserVars(GetParserID()); ptr = parser_vars->m_lldb_value.GetScalar().ULongLong(); @@ -1315,7 +1317,7 @@ ClangExpressionDeclMap::FindExternalVisibleDecls (NameSearchContext &context, context.AddNamedDecl(parser_ptype_type_decl); } while (0); - ClangExpressionVariableSP pvar_sp(m_parser_vars->m_persistent_vars->GetVariable(name)); + ExpressionVariableSP pvar_sp(m_parser_vars->m_persistent_vars->GetVariable(name)); if (pvar_sp) { @@ -1771,9 +1773,9 @@ 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 (valobj)); + ClangExpressionVariable *entity(ClangExpressionVariable::CreateVariableInList(m_found_entities, valobj)); - assert (entity.get()); + assert (entity); entity->EnableParserVars(GetParserID()); ClangExpressionVariable::ParserVars *parser_vars = entity->GetParserVars(GetParserID()); parser_vars->m_parser_type = pt; @@ -1795,12 +1797,12 @@ ClangExpressionDeclMap::AddOneVariable (NameSearchContext &context, VariableSP v void ClangExpressionDeclMap::AddOneVariable(NameSearchContext &context, - ClangExpressionVariableSP &pvar_sp, + ExpressionVariableSP &pvar_sp, unsigned int current_id) { Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS)); - TypeFromUser user_type (pvar_sp->GetTypeFromUser()); + TypeFromUser user_type (pvar_sp->AsClangExpressionVariable()->GetTypeFromUser()); TypeFromParser parser_type (GuardedCopyType(user_type)); @@ -1813,8 +1815,8 @@ ClangExpressionDeclMap::AddOneVariable(NameSearchContext &context, NamedDecl *var_decl = context.AddVarDecl(ClangASTContext::GetLValueReferenceType(parser_type)); - pvar_sp->EnableParserVars(GetParserID()); - ClangExpressionVariable::ParserVars *parser_vars = pvar_sp->GetParserVars(GetParserID()); + pvar_sp->AsClangExpressionVariable()->EnableParserVars(GetParserID()); + ClangExpressionVariable::ParserVars *parser_vars = pvar_sp->AsClangExpressionVariable()->GetParserVars(GetParserID()); parser_vars->m_parser_type = parser_type; parser_vars->m_named_decl = var_decl; parser_vars->m_llvm_value = NULL; @@ -1849,12 +1851,13 @@ ClangExpressionDeclMap::AddOneGenericVariable(NameSearchContext &context, 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, - user_type, - m_parser_vars->m_target_info.byte_order, - m_parser_vars->m_target_info.address_byte_size)); - assert (entity.get()); + 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); entity->EnableParserVars(GetParserID()); ClangExpressionVariable::ParserVars *parser_vars = entity->GetParserVars(GetParserID()); @@ -1892,9 +1895,9 @@ ClangExpressionDeclMap::ResolveUnknownTypes() index < num_entities; ++index) { - ClangExpressionVariableSP entity = m_found_entities.GetVariableAtIndex(index); + ExpressionVariableSP entity = m_found_entities.GetVariableAtIndex(index); - ClangExpressionVariable::ParserVars *parser_vars = entity->GetParserVars(GetParserID()); + ClangExpressionVariable::ParserVars *parser_vars = entity->AsClangExpressionVariable()->GetParserVars(GetParserID()); if (entity->m_flags & ClangExpressionVariable::EVUnknownType) { @@ -1924,7 +1927,7 @@ ClangExpressionDeclMap::ResolveUnknownTypes() if (log) log->Printf("ClangExpressionDeclMap::ResolveUnknownType - Couldn't import the type for a variable"); - return (bool) lldb::ClangExpressionVariableSP(); + return (bool) lldb::ExpressionVariableSP(); } TypeFromUser user_type(copied_type, scratch_ast_context); @@ -1964,10 +1967,11 @@ ClangExpressionDeclMap::AddOneRegister (NameSearchContext &context, NamedDecl *var_decl = context.AddVarDecl(parser_clang_type); - ClangExpressionVariableSP entity(m_found_entities.CreateVariable (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.get()); + 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); std::string decl_name(context.m_decl_name.getAsString()); entity->SetName (ConstString (decl_name.c_str())); @@ -2072,10 +2076,11 @@ ClangExpressionDeclMap::AddOneFunction (NameSearchContext &context, lldb::addr_t load_addr = fun_address.GetCallableLoadAddress(target, is_indirect_function); - ClangExpressionVariableSP entity(m_found_entities.CreateVariable (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.get()); + 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); std::string decl_name(context.m_decl_name.getAsString()); entity->SetName(ConstString(decl_name.c_str())); diff --git a/lldb/source/Expression/ClangPersistentVariables.cpp b/lldb/source/Expression/ClangPersistentVariables.cpp index db062d2e20b..13859b81ac8 100644 --- a/lldb/source/Expression/ClangPersistentVariables.cpp +++ b/lldb/source/Expression/ClangPersistentVariables.cpp @@ -19,35 +19,29 @@ using namespace lldb; using namespace lldb_private; ClangPersistentVariables::ClangPersistentVariables () : - ClangExpressionVariableList(), + ExpressionVariableList(), m_next_persistent_variable_id (0) { } -ClangExpressionVariableSP +ExpressionVariableSP ClangPersistentVariables::CreatePersistentVariable (const lldb::ValueObjectSP &valobj_sp) { - ClangExpressionVariableSP var_sp (CreateVariable(valobj_sp)); - return var_sp; + return ClangExpressionVariable::CreateVariableInList(*this, valobj_sp)->shared_from_this(); } -ClangExpressionVariableSP +ClangExpressionVariable * ClangPersistentVariables::CreatePersistentVariable (ExecutionContextScope *exe_scope, const ConstString &name, const TypeFromUser& user_type, lldb::ByteOrder byte_order, uint32_t addr_byte_size) { - ClangExpressionVariableSP var_sp (GetVariable(name)); - - if (!var_sp) - var_sp = CreateVariable(exe_scope, name, user_type, byte_order, addr_byte_size); - - return var_sp; + return ClangExpressionVariable::CreateVariableInList(*this, exe_scope, name, user_type, byte_order, addr_byte_size); } void -ClangPersistentVariables::RemovePersistentVariable (lldb::ClangExpressionVariableSP variable) +ClangPersistentVariables::RemovePersistentVariable (lldb::ExpressionVariableSP variable) { RemoveVariable(variable); diff --git a/lldb/source/Expression/ClangUserExpression.cpp b/lldb/source/Expression/ClangUserExpression.cpp index b479213ff52..9239389753e 100644 --- a/lldb/source/Expression/ClangUserExpression.cpp +++ b/lldb/source/Expression/ClangUserExpression.cpp @@ -797,7 +797,7 @@ ClangUserExpression::PrepareToExecuteJITExpression (Stream &error_stream, bool ClangUserExpression::FinalizeJITExecution (Stream &error_stream, ExecutionContext &exe_ctx, - lldb::ClangExpressionVariableSP &result, + lldb::ExpressionVariableSP &result, lldb::addr_t function_stack_bottom, lldb::addr_t function_stack_top) { @@ -835,7 +835,7 @@ ClangUserExpression::Execute (Stream &error_stream, ExecutionContext &exe_ctx, const EvaluateExpressionOptions& options, lldb::ClangUserExpressionSP &shared_ptr_to_me, - lldb::ClangExpressionVariableSP &result) + lldb::ExpressionVariableSP &result) { // The expression log is quite verbose, and if you're just tracking the execution of the // expression, it's quite convenient to have these logs come out with the STEP log as well. @@ -1090,7 +1090,7 @@ ClangUserExpression::Evaluate (ExecutionContext &exe_ctx, } else { - lldb::ClangExpressionVariableSP expr_result; + lldb::ExpressionVariableSP expr_result; if (execution_policy == eExecutionPolicyNever && !user_expression_sp->CanInterpret()) diff --git a/lldb/source/Expression/ExpressionVariable.cpp b/lldb/source/Expression/ExpressionVariable.cpp index baeacc48762..1f289b72f48 100644 --- a/lldb/source/Expression/ExpressionVariable.cpp +++ b/lldb/source/Expression/ExpressionVariable.cpp @@ -9,3 +9,24 @@ #include "lldb/Expression/ExpressionVariable.h" +using namespace lldb_private; + +ExpressionVariable::~ExpressionVariable() +{ +} + +uint8_t * +ExpressionVariable::GetValueBytes() +{ + const size_t byte_size = m_frozen_sp->GetByteSize(); + if (byte_size > 0) + { + if (m_frozen_sp->GetDataExtractor().GetByteSize() < byte_size) + { + m_frozen_sp->GetValue().ResizeData(byte_size); + m_frozen_sp->GetValue().GetData (m_frozen_sp->GetDataExtractor()); + } + return const_cast<uint8_t *>(m_frozen_sp->GetDataExtractor().GetDataStart()); + } + return NULL; +} diff --git a/lldb/source/Expression/Materializer.cpp b/lldb/source/Expression/Materializer.cpp index 113ee378194..71467d86870 100644 --- a/lldb/source/Expression/Materializer.cpp +++ b/lldb/source/Expression/Materializer.cpp @@ -66,7 +66,7 @@ Materializer::Entity::SetSizeAndAlignmentFromType (CompilerType &type) class EntityPersistentVariable : public Materializer::Entity { public: - EntityPersistentVariable (lldb::ClangExpressionVariableSP &persistent_variable_sp) : + EntityPersistentVariable (lldb::ExpressionVariableSP &persistent_variable_sp) : Entity(), m_persistent_variable_sp(persistent_variable_sp) { @@ -99,9 +99,9 @@ public: log->Printf("Allocated %s (0x%" PRIx64 ") successfully", m_persistent_variable_sp->GetName().GetCString(), mem); // Put the location of the spare memory into the live data of the ValueObject. - + m_persistent_variable_sp->m_live_sp = ValueObjectConstResult::Create (map.GetBestExecutionContextScope(), - m_persistent_variable_sp->GetTypeFromUser(), + m_persistent_variable_sp->AsClangExpressionVariable()->GetTypeFromUser(), m_persistent_variable_sp->GetName(), mem, eAddressTypeLoad, @@ -230,9 +230,9 @@ public: err.SetErrorStringWithFormat("couldn't read the address of program-allocated variable %s: %s", m_persistent_variable_sp->GetName().GetCString(), read_error.AsCString()); return; } - + m_persistent_variable_sp->m_live_sp = ValueObjectConstResult::Create (map.GetBestExecutionContextScope (), - m_persistent_variable_sp->GetTypeFromUser(), + m_persistent_variable_sp->AsClangExpressionVariable()->GetTypeFromUser(), m_persistent_variable_sp->GetName(), location, eAddressTypeLoad, @@ -390,11 +390,11 @@ public: { } private: - lldb::ClangExpressionVariableSP m_persistent_variable_sp; + lldb::ExpressionVariableSP m_persistent_variable_sp; }; uint32_t -Materializer::AddPersistentVariable (lldb::ClangExpressionVariableSP &persistent_variable_sp, Error &err) +Materializer::AddPersistentVariable (lldb::ExpressionVariableSP &persistent_variable_sp, Error &err) { EntityVector::iterator iter = m_entities.insert(m_entities.end(), EntityUP()); iter->reset (new EntityPersistentVariable (persistent_variable_sp)); @@ -820,7 +820,7 @@ public: err.SetErrorString("Tried to detmaterialize a result variable with the normal Dematerialize method"); } - void Dematerialize (lldb::ClangExpressionVariableSP &result_variable_sp, + void Dematerialize (lldb::ExpressionVariableSP &result_variable_sp, lldb::StackFrameSP &frame_sp, IRMemoryMap &map, lldb::addr_t process_address, @@ -860,13 +860,12 @@ public: ConstString name = target_sp->GetPersistentVariables().GetNextPersistentVariableName(); - lldb::ClangExpressionVariableSP ret; - - ret = target_sp->GetPersistentVariables().CreateVariable(exe_scope, - name, - m_type, - map.GetByteOrder(), - map.GetAddressByteSize()); + lldb::ExpressionVariableSP ret = ClangExpressionVariable::CreateVariableInList(target_sp->GetPersistentVariables(), + exe_scope, + name, + m_type, + map.GetByteOrder(), + map.GetAddressByteSize())->shared_from_this(); if (!ret) { @@ -1395,7 +1394,7 @@ Materializer::Materialize (lldb::StackFrameSP &frame_sp, IRMemoryMap &map, lldb: } void -Materializer::Dematerializer::Dematerialize (Error &error, lldb::ClangExpressionVariableSP &result_sp, lldb::addr_t frame_bottom, lldb::addr_t frame_top) +Materializer::Dematerializer::Dematerialize (Error &error, lldb::ExpressionVariableSP &result_sp, lldb::addr_t frame_bottom, lldb::addr_t frame_top) { lldb::StackFrameSP frame_sp; |