[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