sgraenitz added inline comments.
================ Comment at: include/lldb/Symbol/Symtab.h:43 +private: + enum InfoProvider { ItaniumPartialDemangler, PluginCxxLanguage }; + ---------------- We don't need a None-case here. ================ Comment at: include/lldb/Symbol/Symtab.h:58 + /// dependency. Keep a void* here instead and cast it on-demand on the cpp. + void *m_legacy_parser = nullptr; + ---------------- This is the hackiest point I guess. ================ Comment at: include/lldb/Symbol/Symtab.h:106 +//---------------------------------------------------------------------- + class Symtab { ---------------- ^^^^^ May have its own header & cpp ================ Comment at: include/lldb/Utility/ConstString.h:357 + //------------------------------------------------------------------ /// Set the C string value. ---------------- Fixing a related issue: There is no way to determine whether or not the internal string is null or empty. In fact, `operator!` does the same as the above `IsEmpty()`. The `Mangled::GetDemangledName()` function, however, thinks there would be a difference and wants to benefit from it. The fixed version should be correct now. ================ Comment at: source/Core/Mangled.cpp:198 a.GetName(lldb::eLanguageTypeUnknown, ePreferMangled), - a.GetName(lldb::eLanguageTypeUnknown, ePreferMangled)); + b.GetName(lldb::eLanguageTypeUnknown, ePreferMangled)); } ---------------- Fixing bug: This is no dead code, but well, maybe in a rare branch. ================ Comment at: source/Core/Mangled.cpp:366 // already decoded our mangled name. - if (m_mangled && !m_demangled) { + if (m_mangled && m_demangled.IsNull()) { // We need to generate and cache the demangled name. ---------------- Using the difference between null and empty. ================ Comment at: source/Core/Mangled.cpp:397 } - if (!m_demangled) { + if (m_demangled.IsNull()) { // Set the demangled string to the empty string to indicate we tried to ---------------- Using the difference between null and empty. ================ Comment at: source/Symbol/Symtab.cpp:295 +namespace { +bool lldb_skip_name(const char *mangled_cstr, Mangled::ManglingScheme scheme) { + switch (scheme) { ---------------- This uses a raw C-string instead of `llvm::StringRef` in order to achieve `O(1)` runtime. https://reviews.llvm.org/D49990 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits