diff --git a/lldb/include/lldb/Symbol/SymbolContext.h b/lldb/include/lldb/Symbol/SymbolContext.h --- a/lldb/include/lldb/Symbol/SymbolContext.h +++ b/lldb/include/lldb/Symbol/SymbolContext.h @@ -250,8 +250,8 @@ /// For C++ the name is "this", for Objective-C the name is "self". /// /// \return - /// Returns a string for the name of the instance variable. - ConstString GetInstanceVariableName(); + /// Returns a StringRef for the name of the instance variable. + llvm::StringRef GetInstanceVariableName(); /// Sorts the types in TypeMap according to SymbolContext to TypeList /// diff --git a/lldb/include/lldb/Target/Language.h b/lldb/include/lldb/Target/Language.h --- a/lldb/include/lldb/Target/Language.h +++ b/lldb/include/lldb/Target/Language.h @@ -326,7 +326,7 @@ return ConstString(); } - virtual ConstString GetInstanceVariableName() { return {}; } + virtual llvm::StringRef GetInstanceVariableName() { return {}; } protected: // Classes that inherit from Language can see and modify these diff --git a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h --- a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h +++ b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h @@ -165,7 +165,7 @@ ConstString FindBestAlternateFunctionMangledName( const Mangled mangled, const SymbolContext &sym_ctx) const override; - ConstString GetInstanceVariableName() override { return ConstString("this"); } + llvm::StringRef GetInstanceVariableName() override { return "this"; } // PluginInterface protocol llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); } diff --git a/lldb/source/Plugins/Language/ObjC/ObjCLanguage.h b/lldb/source/Plugins/Language/ObjC/ObjCLanguage.h --- a/lldb/source/Plugins/Language/ObjC/ObjCLanguage.h +++ b/lldb/source/Plugins/Language/ObjC/ObjCLanguage.h @@ -155,7 +155,7 @@ return false; } - ConstString GetInstanceVariableName() override { return ConstString("self"); } + llvm::StringRef GetInstanceVariableName() override { return "self"; } // PluginInterface protocol llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); } diff --git a/lldb/source/Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h b/lldb/source/Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h --- a/lldb/source/Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h +++ b/lldb/source/Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h @@ -40,7 +40,7 @@ static lldb_private::Language *CreateInstance(lldb::LanguageType language); - ConstString GetInstanceVariableName() override { return ConstString("self"); } + llvm::StringRef GetInstanceVariableName() override { return "self"; } static llvm::StringRef GetPluginNameStatic() { return "objcplusplus"; } diff --git a/lldb/source/Symbol/SymbolContext.cpp b/lldb/source/Symbol/SymbolContext.cpp --- a/lldb/source/Symbol/SymbolContext.cpp +++ b/lldb/source/Symbol/SymbolContext.cpp @@ -541,7 +541,7 @@ return nullptr; } -ConstString SymbolContext::GetInstanceVariableName() { +llvm::StringRef SymbolContext::GetInstanceVariableName() { LanguageType lang_type = eLanguageTypeUnknown; if (Block *function_block = GetFunctionBlock()) diff --git a/lldb/source/Target/StackFrame.cpp b/lldb/source/Target/StackFrame.cpp --- a/lldb/source/Target/StackFrame.cpp +++ b/lldb/source/Target/StackFrame.cpp @@ -567,8 +567,9 @@ // Check for direct ivars access which helps us with implicit access to // ivars using "this" or "self". GetSymbolContext(eSymbolContextFunction | eSymbolContextBlock); - if (auto instance_var_name = m_sc.GetInstanceVariableName()) { - var_sp = variable_list->FindVariable(instance_var_name); + llvm::StringRef instance_var_name = m_sc.GetInstanceVariableName(); + if (!instance_var_name.empty()) { + var_sp = variable_list->FindVariable(ConstString(instance_var_name)); if (var_sp) { separator_idx = 0; if (Type *var_type = var_sp->GetType())