[Lldb-commits] [lldb] 2230317 - [lldb] Remove ConstString from DataFormatters interfaces (#237013)
via lldb-commits
lldb-commits at lists.llvm.org
Fri Oct 30 10:59:55 PDT 2026
Author: Alex Langford
Date: 2026-10-30T10:59:49-07:00
New Revision: 2230317cce1d99635832119554596b6b1924741a
URL: https://github.com/llvm/llvm-project/commit/2230317cce1d99635832119554596b6b1924741a
DIFF: https://github.com/llvm/llvm-project/commit/2230317cce1d99635832119554596b6b1924741a.diff
LOG: [lldb] Remove ConstString from DataFormatters interfaces (#237013)
We're now at the point where almost all remaining ConstStrings can be
removed from the DataFormatters library. There are 2 left, both of which
are still required because of calls into ValueObject.
Added:
Modified:
lldb/include/lldb/DataFormatters/DataVisualization.h
lldb/include/lldb/DataFormatters/FormatClasses.h
lldb/include/lldb/DataFormatters/FormatManager.h
lldb/include/lldb/DataFormatters/FormattersContainer.h
lldb/source/Commands/CommandObjectType.cpp
lldb/source/DataFormatters/DataVisualization.cpp
lldb/source/DataFormatters/FormatClasses.cpp
lldb/source/DataFormatters/FormatManager.cpp
lldb/source/DataFormatters/FormatterSection.cpp
lldb/source/DataFormatters/FormattersHelpers.cpp
lldb/source/DataFormatters/LanguageCategory.cpp
lldb/source/DataFormatters/TypeCategoryMap.cpp
lldb/source/DataFormatters/ValueObjectPrinter.cpp
lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp
lldb/unittests/DataFormatter/FormattersContainerTest.cpp
Removed:
################################################################################
diff --git a/lldb/include/lldb/DataFormatters/DataVisualization.h b/lldb/include/lldb/DataFormatters/DataVisualization.h
index d02b378fe7e09b..36b76473af72e2 100644
--- a/lldb/include/lldb/DataFormatters/DataVisualization.h
+++ b/lldb/include/lldb/DataFormatters/DataVisualization.h
@@ -11,7 +11,6 @@
#include "lldb/DataFormatters/FormatClasses.h"
#include "lldb/DataFormatters/FormatManager.h"
-#include "lldb/Utility/ConstString.h"
namespace lldb_private {
@@ -52,13 +51,12 @@ class DataVisualization {
class NamedSummaryFormats {
public:
- static bool GetSummaryFormat(ConstString type,
+ static bool GetSummaryFormat(llvm::StringRef type,
lldb::TypeSummaryImplSP &entry);
- static void Add(ConstString type,
- const lldb::TypeSummaryImplSP &entry);
+ static void Add(llvm::StringRef type, const lldb::TypeSummaryImplSP &entry);
- static bool Delete(ConstString type);
+ static bool Delete(llvm::StringRef type);
static void Clear();
@@ -71,27 +69,27 @@ class DataVisualization {
class Categories {
public:
- static bool GetCategory(ConstString category,
+ static bool GetCategory(llvm::StringRef category,
lldb::TypeCategoryImplSP &entry,
bool allow_create = true);
static bool GetCategory(lldb::LanguageType language,
lldb::TypeCategoryImplSP &entry);
- static void Add(ConstString category);
+ static void Add(llvm::StringRef category);
- static bool Delete(ConstString category);
+ static bool Delete(llvm::StringRef category);
static void Clear();
- static void Clear(ConstString category);
+ static void Clear(llvm::StringRef category);
- static void Enable(ConstString category,
+ static void Enable(llvm::StringRef category,
TypeCategoryMap::Position = TypeCategoryMap::Default);
static void Enable(lldb::LanguageType lang_type);
- static void Disable(ConstString category);
+ static void Disable(llvm::StringRef category);
static void Disable(lldb::LanguageType lang_type);
diff --git a/lldb/include/lldb/DataFormatters/FormatClasses.h b/lldb/include/lldb/DataFormatters/FormatClasses.h
index 89d74649ecc645..6121839cac7bda 100644
--- a/lldb/include/lldb/DataFormatters/FormatClasses.h
+++ b/lldb/include/lldb/DataFormatters/FormatClasses.h
@@ -74,16 +74,16 @@ class FormattersMatchCandidate {
}
};
- FormattersMatchCandidate(ConstString name,
+ FormattersMatchCandidate(std::string name,
ScriptInterpreter *script_interpreter, TypeImpl type,
Flags flags, uint32_t ptr_stripped_depth = 0)
- : m_type_name(name), m_script_interpreter(script_interpreter),
+ : m_type_name(std::move(name)), m_script_interpreter(script_interpreter),
m_type(type), m_flags(flags), m_ptr_stripped_depth(ptr_stripped_depth) {
}
~FormattersMatchCandidate() = default;
- ConstString GetTypeName() const { return m_type_name; }
+ llvm::StringRef GetTypeName() const { return m_type_name; }
TypeImpl GetType() const { return m_type; }
@@ -115,7 +115,7 @@ class FormattersMatchCandidate {
}
private:
- ConstString m_type_name;
+ std::string m_type_name;
// If a formatter provides a matching callback function, we need the script
// interpreter and the type object (as an argument to the callback).
ScriptInterpreter *m_script_interpreter;
@@ -133,7 +133,7 @@ class FormattersMatchData {
FormattersMatchVector GetMatchesVector();
- ConstString GetTypeForCache();
+ llvm::StringRef GetTypeForCache();
CandidateLanguagesVector GetCandidateLanguages();
@@ -145,7 +145,7 @@ class FormattersMatchData {
ValueObject &m_valobj;
lldb::DynamicValueType m_dynamic_value_type;
std::pair<FormattersMatchVector, bool> m_formatters_match_vector;
- ConstString m_type_for_cache;
+ std::string m_type_for_cache;
CandidateLanguagesVector m_candidate_languages;
};
diff --git a/lldb/include/lldb/DataFormatters/FormatManager.h b/lldb/include/lldb/DataFormatters/FormatManager.h
index 76c5d0caed7c47..62ba43bea7baa3 100644
--- a/lldb/include/lldb/DataFormatters/FormatManager.h
+++ b/lldb/include/lldb/DataFormatters/FormatManager.h
@@ -50,12 +50,12 @@ class FormatManager : public IFormatChangeListener {
}
void
- EnableCategory(ConstString category_name,
+ EnableCategory(llvm::StringRef category_name,
TypeCategoryMap::Position pos = TypeCategoryMap::Default) {
EnableCategory(category_name, pos, {});
}
- void EnableCategory(ConstString category_name,
+ void EnableCategory(llvm::StringRef category_name,
TypeCategoryMap::Position pos, lldb::LanguageType lang) {
lldb::TypeCategoryImplSP category_sp;
if (m_categories_map.Get(category_name, category_sp) && category_sp) {
@@ -64,7 +64,7 @@ class FormatManager : public IFormatChangeListener {
}
}
- void DisableCategory(ConstString category_name) {
+ void DisableCategory(llvm::StringRef category_name) {
m_categories_map.Disable(category_name);
}
@@ -82,7 +82,7 @@ class FormatManager : public IFormatChangeListener {
void DisableAllCategories();
- bool DeleteCategory(ConstString category_name) {
+ bool DeleteCategory(llvm::StringRef category_name) {
return m_categories_map.Delete(category_name);
}
@@ -96,7 +96,7 @@ class FormatManager : public IFormatChangeListener {
void ForEachCategory(TypeCategoryMap::ForEachCallback callback);
- lldb::TypeCategoryImplSP GetCategory(ConstString category_name,
+ lldb::TypeCategoryImplSP GetCategory(llvm::StringRef category_name,
bool can_create = true);
lldb::TypeFormatImplSP
@@ -150,7 +150,7 @@ class FormatManager : public IFormatChangeListener {
return matches;
}
- static ConstString GetTypeForCache(ValueObject &, lldb::DynamicValueType);
+ static llvm::StringRef GetTypeForCache(ValueObject &, lldb::DynamicValueType);
LanguageCategory *GetCategoryForLanguage(lldb::LanguageType lang_type);
@@ -173,9 +173,9 @@ class FormatManager : public IFormatChangeListener {
NamedSummariesMap m_named_summaries_map;
TypeCategoryMap m_categories_map;
- ConstString m_default_category_name;
- ConstString m_system_category_name;
- ConstString m_vectortypes_category_name;
+ std::string m_default_category_name;
+ std::string m_system_category_name;
+ std::string m_vectortypes_category_name;
template <typename ImplSP>
ImplSP Get(ValueObject &valobj, lldb::DynamicValueType use_dynamic);
diff --git a/lldb/include/lldb/DataFormatters/FormattersContainer.h b/lldb/include/lldb/DataFormatters/FormattersContainer.h
index f5fdc20e7b59a8..8cae65a4c12ae3 100644
--- a/lldb/include/lldb/DataFormatters/FormattersContainer.h
+++ b/lldb/include/lldb/DataFormatters/FormattersContainer.h
@@ -90,7 +90,7 @@ class TypeMatcher {
/// True iff this matches the given type.
bool Matches(FormattersMatchCandidate candidate_type) const {
- llvm::StringRef type_name = candidate_type.GetTypeName().GetStringRef();
+ llvm::StringRef type_name = candidate_type.GetTypeName();
switch (m_match_type) {
case lldb::eFormatterMatchExact:
return m_name == type_name ||
diff --git a/lldb/source/Commands/CommandObjectType.cpp b/lldb/source/Commands/CommandObjectType.cpp
index d83243ca7413d1..2cf9d72d5f3e5f 100644
--- a/lldb/source/Commands/CommandObjectType.cpp
+++ b/lldb/source/Commands/CommandObjectType.cpp
@@ -2315,8 +2315,7 @@ bool CommandObjectTypeSynthAdd::AddSynth(std::string type_name,
// It's not generally possible to get a type object here. For example, this
// command can be run before loading any binaries. Do just a best-effort
// name-based lookup here to try to prevent conflicts.
- FormattersMatchCandidate candidate_type(ConstString(type_name), nullptr,
- TypeImpl(),
+ FormattersMatchCandidate candidate_type(type_name, nullptr, TypeImpl(),
FormattersMatchCandidate::Flags());
if (category->AnyMatches(candidate_type, eFormatCategoryItemFilter)) {
if (error)
@@ -2456,8 +2455,7 @@ class CommandObjectTypeFilterAdd : public CommandObjectParsed {
// this command can be run before loading any binaries. Do just a
// best-effort name-based lookup here to try to prevent conflicts.
FormattersMatchCandidate candidate_type(
- ConstString(type_name), nullptr, TypeImpl(),
- FormattersMatchCandidate::Flags());
+ type_name, nullptr, TypeImpl(), FormattersMatchCandidate::Flags());
lldb::SyntheticChildrenSP entry;
if (category->AnyMatches(candidate_type, eFormatCategoryItemSynth)) {
if (error)
diff --git a/lldb/source/DataFormatters/DataVisualization.cpp b/lldb/source/DataFormatters/DataVisualization.cpp
index 61f40ff4645f9e..6fc48c071e11d0 100644
--- a/lldb/source/DataFormatters/DataVisualization.cpp
+++ b/lldb/source/DataFormatters/DataVisualization.cpp
@@ -65,7 +65,7 @@ DataVisualization::GetSyntheticForType(lldb::TypeNameSpecifierImplSP type_sp) {
return GetFormatManager().GetSyntheticForType(type_sp);
}
-bool DataVisualization::Categories::GetCategory(ConstString category,
+bool DataVisualization::Categories::GetCategory(llvm::StringRef category,
lldb::TypeCategoryImplSP &entry,
bool allow_create) {
entry = GetFormatManager().GetCategory(category, allow_create);
@@ -80,11 +80,11 @@ bool DataVisualization::Categories::GetCategory(
return (entry.get() != nullptr);
}
-void DataVisualization::Categories::Add(ConstString category) {
+void DataVisualization::Categories::Add(llvm::StringRef category) {
GetFormatManager().GetCategory(category);
}
-bool DataVisualization::Categories::Delete(ConstString category) {
+bool DataVisualization::Categories::Delete(llvm::StringRef category) {
GetFormatManager().DisableCategory(category);
return GetFormatManager().DeleteCategory(category);
}
@@ -93,11 +93,11 @@ void DataVisualization::Categories::Clear() {
GetFormatManager().ClearCategories();
}
-void DataVisualization::Categories::Clear(ConstString category) {
+void DataVisualization::Categories::Clear(llvm::StringRef category) {
GetFormatManager().GetCategory(category)->Clear(eFormatCategoryItemSummary);
}
-void DataVisualization::Categories::Enable(ConstString category,
+void DataVisualization::Categories::Enable(llvm::StringRef category,
TypeCategoryMap::Position pos) {
if (GetFormatManager().GetCategory(category)->IsEnabled())
GetFormatManager().DisableCategory(category);
@@ -110,7 +110,7 @@ void DataVisualization::Categories::Enable(lldb::LanguageType lang_type) {
lang_category->Enable();
}
-void DataVisualization::Categories::Disable(ConstString category) {
+void DataVisualization::Categories::Disable(llvm::StringRef category) {
if (GetFormatManager().GetCategory(category)->IsEnabled())
GetFormatManager().DisableCategory(category);
}
@@ -159,20 +159,18 @@ DataVisualization::Categories::GetCategoryAtIndex(size_t index) {
}
bool DataVisualization::NamedSummaryFormats::GetSummaryFormat(
- ConstString type, lldb::TypeSummaryImplSP &entry) {
- return GetFormatManager().GetNamedSummaryContainer().GetExact(
- type.GetStringRef().str(), entry);
+ llvm::StringRef type, lldb::TypeSummaryImplSP &entry) {
+ return GetFormatManager().GetNamedSummaryContainer().GetExact(type.str(),
+ entry);
}
void DataVisualization::NamedSummaryFormats::Add(
- ConstString type, const lldb::TypeSummaryImplSP &entry) {
- GetFormatManager().GetNamedSummaryContainer().Add(type.GetStringRef().str(),
- entry);
+ llvm::StringRef type, const lldb::TypeSummaryImplSP &entry) {
+ GetFormatManager().GetNamedSummaryContainer().Add(type.str(), entry);
}
-bool DataVisualization::NamedSummaryFormats::Delete(ConstString type) {
- return GetFormatManager().GetNamedSummaryContainer().Delete(
- type.GetStringRef().str());
+bool DataVisualization::NamedSummaryFormats::Delete(llvm::StringRef type) {
+ return GetFormatManager().GetNamedSummaryContainer().Delete(type.str());
}
void DataVisualization::NamedSummaryFormats::Clear() {
diff --git a/lldb/source/DataFormatters/FormatClasses.cpp b/lldb/source/DataFormatters/FormatClasses.cpp
index 44fa96033bc1e6..594faa9768dbdc 100644
--- a/lldb/source/DataFormatters/FormatClasses.cpp
+++ b/lldb/source/DataFormatters/FormatClasses.cpp
@@ -36,7 +36,9 @@ FormattersMatchVector FormattersMatchData::GetMatchesVector() {
return m_formatters_match_vector.first;
}
-ConstString FormattersMatchData::GetTypeForCache() { return m_type_for_cache; }
+llvm::StringRef FormattersMatchData::GetTypeForCache() {
+ return m_type_for_cache;
+}
CandidateLanguagesVector FormattersMatchData::GetCandidateLanguages() {
return m_candidate_languages;
diff --git a/lldb/source/DataFormatters/FormatManager.cpp b/lldb/source/DataFormatters/FormatManager.cpp
index c588938a784237..c242c50a5b19b3 100644
--- a/lldb/source/DataFormatters/FormatManager.cpp
+++ b/lldb/source/DataFormatters/FormatManager.cpp
@@ -178,7 +178,7 @@ void FormatManager::GetPossibleMatches(
FormattersMatchCandidate::Flags current_flags, bool root_level,
uint32_t ptr_stripped_depth) {
compiler_type = compiler_type.GetTypeForFormatters();
- ConstString type_name(compiler_type.GetTypeName());
+ llvm::StringRef type_name(compiler_type.GetTypeName().GetStringRef());
// A ValueObject that couldn't be made correctly won't necessarily have a
// target. We aren't going to find a formatter in this case anyway, so we
// should just exit.
@@ -190,19 +190,20 @@ void FormatManager::GetPossibleMatches(
if (valobj.GetBitfieldBitSize() > 0) {
StreamString sstring;
sstring.Format("{0}:{1}", type_name, valobj.GetBitfieldBitSize());
- ConstString bitfieldname(sstring.GetString());
- entries.push_back({bitfieldname, script_interpreter,
+ llvm::StringRef bitfieldname(sstring.GetString());
+ entries.push_back({bitfieldname.str(), script_interpreter,
TypeImpl(compiler_type), current_flags,
ptr_stripped_depth});
}
if (!compiler_type.IsMeaninglessWithoutDynamicResolution()) {
- entries.push_back({type_name, script_interpreter, TypeImpl(compiler_type),
- current_flags, ptr_stripped_depth});
+ entries.push_back({type_name.str(), script_interpreter,
+ TypeImpl(compiler_type), current_flags,
+ ptr_stripped_depth});
- ConstString display_type_name(compiler_type.GetTypeName());
+ llvm::StringRef display_type_name(compiler_type.GetTypeName());
if (display_type_name != type_name)
- entries.push_back({display_type_name, script_interpreter,
+ entries.push_back({display_type_name.str(), script_interpreter,
TypeImpl(compiler_type), current_flags,
ptr_stripped_depth});
}
@@ -412,9 +413,9 @@ void FormatManager::ForEachCategory(TypeCategoryMap::ForEachCallback callback) {
}
}
-lldb::TypeCategoryImplSP FormatManager::GetCategory(ConstString category_name,
- bool can_create) {
- if (!category_name)
+lldb::TypeCategoryImplSP
+FormatManager::GetCategory(llvm::StringRef category_name, bool can_create) {
+ if (category_name.empty())
return GetCategory(m_default_category_name);
lldb::TypeCategoryImplSP category;
if (m_categories_map.Get(category_name, category))
@@ -423,9 +424,8 @@ lldb::TypeCategoryImplSP FormatManager::GetCategory(ConstString category_name,
if (!can_create)
return lldb::TypeCategoryImplSP();
- m_categories_map.Add(category_name,
- std::make_shared<TypeCategoryImpl>(
- this, category_name.GetStringRef().str()));
+ m_categories_map.Add(category_name, std::make_shared<TypeCategoryImpl>(
+ this, category_name.str()));
return GetCategory(category_name);
}
@@ -563,15 +563,16 @@ bool FormatManager::ShouldPrintAsOneLiner(ValueObject &valobj) {
return true;
}
-ConstString FormatManager::GetTypeForCache(ValueObject &valobj,
- lldb::DynamicValueType use_dynamic) {
+llvm::StringRef
+FormatManager::GetTypeForCache(ValueObject &valobj,
+ lldb::DynamicValueType use_dynamic) {
ValueObjectSP valobj_sp = valobj.GetQualifiedRepresentationIfAvailable(
use_dynamic, valobj.IsSynthetic());
if (valobj_sp && valobj_sp->GetCompilerType().IsValid()) {
if (!valobj_sp->GetCompilerType().IsMeaninglessWithoutDynamicResolution())
return valobj_sp->GetQualifiedTypeName();
}
- return ConstString();
+ return llvm::StringRef();
}
std::vector<lldb::LanguageType>
@@ -624,7 +625,7 @@ template <> const char *FormatterKind<lldb::TypeSummaryImplSP> = "summary";
template <> const char *FormatterKind<lldb::SyntheticChildrenSP> = "synthetic";
} // namespace
-#define FORMAT_LOG(Message) "[%s] " Message, FormatterKind<ImplSP>
+#define FORMAT_LOG(Message) "[{0}] " Message, FormatterKind<ImplSP>
template <typename ImplSP>
ImplSP FormatManager::Get(ValueObject &valobj,
@@ -635,19 +636,19 @@ ImplSP FormatManager::Get(ValueObject &valobj,
Log *log = GetLog(LLDBLog::DataFormatters);
- LLDB_LOGF(log, FORMAT_LOG("Search failed. Giving language a chance."));
+ LLDB_LOG(log, FORMAT_LOG("Search failed. Giving language a chance."));
for (lldb::LanguageType lang_type : match_data.GetCandidateLanguages()) {
if (LanguageCategory *lang_category = GetCategoryForLanguage(lang_type)) {
ImplSP retval_sp;
if (lang_category->Get(match_data, retval_sp))
if (retval_sp) {
- LLDB_LOGF(log, FORMAT_LOG("Language search success. Returning."));
+ LLDB_LOG(log, FORMAT_LOG("Language search success. Returning."));
return retval_sp;
}
}
}
- LLDB_LOGF(log, FORMAT_LOG("Search failed. Giving hardcoded a chance."));
+ LLDB_LOG(log, FORMAT_LOG("Search failed. Giving hardcoded a chance."));
return GetHardcoded<ImplSP>(match_data);
}
@@ -655,25 +656,26 @@ template <typename ImplSP>
ImplSP FormatManager::GetCached(FormattersMatchData &match_data) {
ImplSP retval_sp;
Log *log = GetLog(LLDBLog::DataFormatters);
- if (match_data.GetTypeForCache()) {
- LLDB_LOGF(log, "\n\n" FORMAT_LOG("Looking into cache for type %s"),
- match_data.GetTypeForCache().AsCString("<invalid>"));
- if (m_format_cache.Get(match_data.GetTypeForCache(), retval_sp)) {
- LLDB_LOGF(log, FORMAT_LOG("Cache search success. Returning."));
+ llvm::StringRef match_data_name(match_data.GetTypeForCache());
+ if (!match_data_name.empty()) {
+ LLDB_LOG(log, "\n\n" FORMAT_LOG("Looking into cache for type {1}"),
+ match_data_name.nonEmptyOr("<invalid>"));
+ if (m_format_cache.Get(match_data_name, retval_sp)) {
+ LLDB_LOG(log, FORMAT_LOG("Cache search success. Returning."));
LLDB_LOG_VERBOSE(log, "Cache hits: {0} - Cache Misses: {1}",
m_format_cache.GetCacheHits(),
m_format_cache.GetCacheMisses());
return retval_sp;
}
- LLDB_LOGF(log, FORMAT_LOG("Cache search failed. Going normal route"));
+ LLDB_LOG(log, FORMAT_LOG("Cache search failed. Going normal route"));
}
m_categories_map.Get(match_data, retval_sp);
- if (match_data.GetTypeForCache() && (!retval_sp || !retval_sp->NonCacheable())) {
- LLDB_LOGF(log, FORMAT_LOG("Caching %p for type %s"),
- static_cast<void *>(retval_sp.get()),
- match_data.GetTypeForCache().AsCString("<invalid>"));
- m_format_cache.Set(match_data.GetTypeForCache(), retval_sp);
+ if (!match_data_name.empty() && (!retval_sp || !retval_sp->NonCacheable())) {
+ LLDB_LOG(log, FORMAT_LOG("Caching {1} for type {2}"),
+ static_cast<void *>(retval_sp.get()),
+ match_data_name.nonEmptyOr("<invalid>"));
+ m_format_cache.Set(match_data_name, retval_sp);
}
LLDB_LOG_VERBOSE(log, "Cache hits: {0} - Cache Misses: {1}",
m_format_cache.GetCacheHits(),
@@ -704,9 +706,9 @@ FormatManager::GetSyntheticChildren(ValueObject &valobj,
FormatManager::FormatManager()
: m_last_revision(0), m_format_cache(), m_language_categories_mutex(),
m_language_categories_map(), m_named_summaries_map(this),
- m_categories_map(this), m_default_category_name(ConstString("default")),
- m_system_category_name(ConstString("system")),
- m_vectortypes_category_name(ConstString("VectorTypes")) {
+ m_categories_map(this), m_default_category_name("default"),
+ m_system_category_name("system"),
+ m_vectortypes_category_name("VectorTypes") {
LoadSystemFormatters();
LoadVectorFormatters();
diff --git a/lldb/source/DataFormatters/FormatterSection.cpp b/lldb/source/DataFormatters/FormatterSection.cpp
index f02da9638a733e..7f01d466b48582 100644
--- a/lldb/source/DataFormatters/FormatterSection.cpp
+++ b/lldb/source/DataFormatters/FormatterSection.cpp
@@ -45,7 +45,7 @@ static void ForEachFormatterInModule(
return;
TypeCategoryImplSP category;
- DataVisualization::Categories::GetCategory(ConstString("default"), category);
+ DataVisualization::Categories::GetCategory("default", category);
// The type summary record is serialized as follows.
//
@@ -116,8 +116,7 @@ void LoadTypeSummariesForModule(ModuleSP module_sp) {
[&](llvm::DataExtractor extractor, llvm::StringRef type_name,
uint32_t version) {
TypeCategoryImplSP category;
- DataVisualization::Categories::GetCategory(ConstString("default"),
- category);
+ DataVisualization::Categories::GetCategory("default", category);
// The type summary record is serialized as follows.
//
// * The size of the summary string
@@ -179,8 +178,7 @@ void LoadFormattersForModule(ModuleSP module_sp) {
// * Length of the program (ULEB128)
// * The program bytecode
TypeCategoryImplSP category;
- DataVisualization::Categories::GetCategory(ConstString("default"),
- category);
+ DataVisualization::Categories::GetCategory("default", category);
llvm::DataExtractor::Cursor cursor(0);
uint64_t flags = extractor.getULEB128(cursor);
diff --git a/lldb/source/DataFormatters/FormattersHelpers.cpp b/lldb/source/DataFormatters/FormattersHelpers.cpp
index 14038f9e82d24e..f425123ed0f275 100644
--- a/lldb/source/DataFormatters/FormattersHelpers.cpp
+++ b/lldb/source/DataFormatters/FormattersHelpers.cpp
@@ -15,7 +15,6 @@
#include "lldb/Target/StackFrame.h"
#include "lldb/Target/Target.h"
#include "lldb/Target/Thread.h"
-#include "lldb/Utility/ConstString.h"
#include "lldb/Utility/RegularExpression.h"
using namespace lldb;
diff --git a/lldb/source/DataFormatters/LanguageCategory.cpp b/lldb/source/DataFormatters/LanguageCategory.cpp
index 4794186ce9aecc..bfdb6cfd302ab2 100644
--- a/lldb/source/DataFormatters/LanguageCategory.cpp
+++ b/lldb/source/DataFormatters/LanguageCategory.cpp
@@ -39,17 +39,17 @@ bool LanguageCategory::Get(FormattersMatchData &match_data,
if (!IsEnabled())
return false;
- if (match_data.GetTypeForCache()) {
- if (m_format_cache.Get(match_data.GetTypeForCache(), retval_sp))
+ llvm::StringRef match_data_name(match_data.GetTypeForCache());
+ if (!match_data_name.empty()) {
+ if (m_format_cache.Get(match_data_name, retval_sp))
return (bool)retval_sp;
}
ValueObject &valobj(match_data.GetValueObject());
bool result = m_category_sp->Get(valobj.GetObjectRuntimeLanguage(),
match_data.GetMatchesVector(), retval_sp);
- if (match_data.GetTypeForCache() &&
- (!retval_sp || !retval_sp->NonCacheable())) {
- m_format_cache.Set(match_data.GetTypeForCache(), retval_sp);
+ if (!match_data_name.empty() && (!retval_sp || !retval_sp->NonCacheable())) {
+ m_format_cache.Set(match_data_name, retval_sp);
}
return result;
}
diff --git a/lldb/source/DataFormatters/TypeCategoryMap.cpp b/lldb/source/DataFormatters/TypeCategoryMap.cpp
index 609efe8bd0d5f4..2485c84085c9cc 100644
--- a/lldb/source/DataFormatters/TypeCategoryMap.cpp
+++ b/lldb/source/DataFormatters/TypeCategoryMap.cpp
@@ -169,9 +169,9 @@ void TypeCategoryMap::Get(FormattersMatchData &match_data, ImplSP &retval) {
if (log) {
for (auto match : match_data.GetMatchesVector()) {
- LLDB_LOGF(
- log, "[%s] candidate match = %s %s %s %s ptr-stripped-depth=%u",
- __FUNCTION__, match.GetTypeName().GetCString(),
+ LLDB_LOG(
+ log, "[{0}] candidate match = {1} {2} {3} {4} ptr-stripped-depth={5}",
+ __FUNCTION__, match.GetTypeName(),
match.DidStripPointer() ? "strip-pointers" : "no-strip-pointers",
match.DidStripReference() ? "strip-reference" : "no-strip-reference",
match.DidStripTypedef() ? "strip-typedef" : "no-strip-typedef",
diff --git a/lldb/source/DataFormatters/ValueObjectPrinter.cpp b/lldb/source/DataFormatters/ValueObjectPrinter.cpp
index ee73e78c17c5af..c40aa4aae787ba 100644
--- a/lldb/source/DataFormatters/ValueObjectPrinter.cpp
+++ b/lldb/source/DataFormatters/ValueObjectPrinter.cpp
@@ -275,7 +275,7 @@ void ValueObjectPrinter::PrintDecl() {
if (show_type) {
// Some ValueObjects don't have types (like registers sets). Only print the
// type if there is one to print
- ConstString type_name;
+ llvm::StringRef type_name;
if (m_compiler_type.IsValid()) {
type_name = m_options.m_use_type_display_name
? valobj.GetDisplayTypeName()
@@ -284,18 +284,16 @@ void ValueObjectPrinter::PrintDecl() {
// only show an invalid type name if the user explicitly triggered
// show_type
if (m_options.m_show_types)
- type_name = ConstString("<invalid type>");
+ type_name = "<invalid type>";
}
- if (type_name) {
- std::string type_name_str(type_name.GetCString());
+ if (!type_name.empty()) {
if (m_options.m_hide_pointer_value) {
- for (auto iter = type_name_str.find(" *"); iter != std::string::npos;
- iter = type_name_str.find(" *")) {
- type_name_str.erase(iter, 2);
+ while (type_name.starts_with(" *")) {
+ type_name = type_name.drop_front(2);
}
}
- typeName << type_name_str.c_str();
+ typeName << type_name;
}
}
@@ -323,8 +321,8 @@ void ValueObjectPrinter::PrintDecl() {
}
if (m_options.m_decl_printing_helper) {
- ConstString type_name_cstr(typeName.GetString());
- ConstString var_name_cstr(varName.GetString());
+ llvm::StringRef type_name(typeName.GetString());
+ llvm::StringRef var_name(varName.GetString());
DumpValueObjectOptions decl_print_options = m_options;
// Pass printing helpers an option object that indicates whether the name
@@ -332,7 +330,7 @@ void ValueObjectPrinter::PrintDecl() {
decl_print_options.SetHideName(!ShouldShowName());
StreamString dest_stream;
- if (m_options.m_decl_printing_helper(type_name_cstr, var_name_cstr,
+ if (m_options.m_decl_printing_helper(type_name, var_name,
decl_print_options, dest_stream)) {
decl_printed = true;
m_stream->PutCString(dest_stream.GetString());
diff --git a/lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp b/lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp
index 42c53e1b81cfb5..9443df4f7e9b31 100644
--- a/lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp
+++ b/lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp
@@ -949,7 +949,8 @@ ObjCLanguage::GetPossibleFormattersMatches(ValueObject &valobj,
break;
if (ConstString name = objc_class_sp->GetClassName())
result.push_back(
- {name, valobj.GetTargetSP()->GetDebugger().GetScriptInterpreter(),
+ {name.GetStringRef().str(),
+ valobj.GetTargetSP()->GetDebugger().GetScriptInterpreter(),
TypeImpl(objc_class_sp->GetType()),
FormattersMatchCandidate::Flags{}});
} while (false);
diff --git a/lldb/unittests/DataFormatter/FormattersContainerTest.cpp b/lldb/unittests/DataFormatter/FormattersContainerTest.cpp
index 4ceac860c6f1d5..fc696ed22cf2c7 100644
--- a/lldb/unittests/DataFormatter/FormattersContainerTest.cpp
+++ b/lldb/unittests/DataFormatter/FormattersContainerTest.cpp
@@ -17,7 +17,7 @@ using namespace lldb_private;
// Creates a dummy candidate with just a type name in order to test the string
// matching (exact name match and regex match) paths.
FormattersMatchCandidate CandidateFromTypeName(const char *type_name) {
- return FormattersMatchCandidate(ConstString(type_name), nullptr, TypeImpl(),
+ return FormattersMatchCandidate(type_name, nullptr, TypeImpl(),
FormattersMatchCandidate::Flags());
}
More information about the lldb-commits
mailing list