Author: Kazu Hirata Date: 2024-11-10T07:50:24-08:00 New Revision: 15ce2e183fb801ff418eb1347a9d5893e5665782
URL: https://github.com/llvm/llvm-project/commit/15ce2e183fb801ff418eb1347a9d5893e5665782 DIFF: https://github.com/llvm/llvm-project/commit/15ce2e183fb801ff418eb1347a9d5893e5665782.diff LOG: [lldb] Use heterogenous lookups with std::map (NFC) (#115590) (#115634) Heterogenous lookups allow us to call find with StringRef, avoiding a temporary heap allocation of std::string. Added: Modified: lldb/include/lldb/Interpreter/CommandObject.h lldb/source/Commands/CommandObjectMultiword.cpp Removed: ################################################################################ diff --git a/lldb/include/lldb/Interpreter/CommandObject.h b/lldb/include/lldb/Interpreter/CommandObject.h index c5167e5e0ecb6a..e6fea9e022c43a 100644 --- a/lldb/include/lldb/Interpreter/CommandObject.h +++ b/lldb/include/lldb/Interpreter/CommandObject.h @@ -35,8 +35,9 @@ namespace lldb_private { template <typename ValueType> int AddNamesMatchingPartialString( - const std::map<std::string, ValueType> &in_map, llvm::StringRef cmd_str, - StringList &matches, StringList *descriptions = nullptr) { + const std::map<std::string, ValueType, std::less<>> &in_map, + llvm::StringRef cmd_str, StringList &matches, + StringList *descriptions = nullptr) { int number_added = 0; const bool add_all = cmd_str.empty(); @@ -54,7 +55,8 @@ int AddNamesMatchingPartialString( } template <typename ValueType> -size_t FindLongestCommandWord(std::map<std::string, ValueType> &dict) { +size_t +FindLongestCommandWord(std::map<std::string, ValueType, std::less<>> &dict) { auto end = dict.end(); size_t max_len = 0; @@ -107,7 +109,7 @@ class CommandObject : public std::enable_shared_from_this<CommandObject> { typedef std::vector<CommandArgumentData> CommandArgumentEntry; // Used to build individual command argument lists - typedef std::map<std::string, lldb::CommandObjectSP> CommandMap; + typedef std::map<std::string, lldb::CommandObjectSP, std::less<>> CommandMap; CommandObject(CommandInterpreter &interpreter, llvm::StringRef name, llvm::StringRef help = "", llvm::StringRef syntax = "", diff --git a/lldb/source/Commands/CommandObjectMultiword.cpp b/lldb/source/Commands/CommandObjectMultiword.cpp index b4cdfea9b1a3ef..c99b75ff29144d 100644 --- a/lldb/source/Commands/CommandObjectMultiword.cpp +++ b/lldb/source/Commands/CommandObjectMultiword.cpp @@ -32,7 +32,7 @@ CommandObjectMultiword::GetSubcommandSPExact(llvm::StringRef sub_cmd) { if (m_subcommand_dict.empty()) return {}; - auto pos = m_subcommand_dict.find(std::string(sub_cmd)); + auto pos = m_subcommand_dict.find(sub_cmd); if (pos == m_subcommand_dict.end()) return {}; @@ -64,7 +64,7 @@ CommandObjectSP CommandObjectMultiword::GetSubcommandSP(llvm::StringRef sub_cmd, // function, since I now know I have an exact match... sub_cmd = matches->GetStringAtIndex(0); - pos = m_subcommand_dict.find(std::string(sub_cmd)); + pos = m_subcommand_dict.find(sub_cmd); if (pos != m_subcommand_dict.end()) return_cmd_sp = pos->second; } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits