[Lldb-commits] [lldb] r148054 - in /lldb/trunk: include/lldb/Core/ModuleList.h source/Core/Module.cpp source/Core/ModuleList.cpp

Jim Ingham jingham at apple.com
Thu Jan 12 14:35:30 PST 2012


Author: jingham
Date: Thu Jan 12 16:35:29 2012
New Revision: 148054

URL: http://llvm.org/viewvc/llvm-project?rev=148054&view=rev
Log:
Let the Module FindType do the stripping of namespace components, that's not expensive
and doing it both at the ModuleList and Module levels means we look 4 times for a negative
search.  Also, don't do the search for the stripped name if that is the same as the original
one.

Modified:
    lldb/trunk/include/lldb/Core/ModuleList.h
    lldb/trunk/source/Core/Module.cpp
    lldb/trunk/source/Core/ModuleList.cpp

Modified: lldb/trunk/include/lldb/Core/ModuleList.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ModuleList.h?rev=148054&r1=148053&r2=148054&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/ModuleList.h (original)
+++ lldb/trunk/include/lldb/Core/ModuleList.h Thu Jan 12 16:35:29 2012
@@ -434,13 +434,6 @@
     collection m_modules; ///< The collection of modules.
     mutable Mutex m_modules_mutex;
 
-private:
-    uint32_t
-    FindTypes_Impl (const SymbolContext& sc, 
-                    const ConstString &name, 
-                    bool append, 
-                    uint32_t max_matches, 
-                    TypeList& types);
 };
 
 } // namespace lldb_private

Modified: lldb/trunk/source/Core/Module.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Module.cpp?rev=148054&r1=148053&r2=148054&view=diff
==============================================================================
--- lldb/trunk/source/Core/Module.cpp (original)
+++ lldb/trunk/source/Core/Module.cpp Thu Jan 12 16:35:29 2012
@@ -531,8 +531,13 @@
     
     if (retval == 0)
     {
-        const char *stripped = StripTypeName(name.GetCString());
-        return FindTypes_Impl(sc, ConstString(stripped), namespace_decl, append, max_matches, types);
+        const char *orig_name = name.GetCString();
+        const char *stripped = StripTypeName(orig_name);
+        // Only do this lookup if StripTypeName has stripped the name:
+        if (stripped != orig_name)
+           return FindTypes_Impl(sc, ConstString(stripped), namespace_decl, append, max_matches, types);
+        else
+            return 0;
     }
     else
         return retval;

Modified: lldb/trunk/source/Core/ModuleList.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ModuleList.cpp?rev=148054&r1=148053&r2=148054&view=diff
==============================================================================
--- lldb/trunk/source/Core/ModuleList.cpp (original)
+++ lldb/trunk/source/Core/ModuleList.cpp Thu Jan 12 16:35:29 2012
@@ -434,7 +434,7 @@
 
 
 uint32_t
-ModuleList::FindTypes_Impl (const SymbolContext& sc, const ConstString &name, bool append, uint32_t max_matches, TypeList& types)
+ModuleList::FindTypes (const SymbolContext& sc, const ConstString &name, bool append, uint32_t max_matches, TypeList& types)
 {
     Mutex::Locker locker(m_modules_mutex);
     
@@ -454,41 +454,6 @@
     return total_matches;
 }
 
-// depending on implementation details, type lookup might fail because of
-// embedded spurious namespace:: prefixes. this call strips them, paying
-// attention to the fact that a type might have namespace'd type names as
-// arguments to templates, and those must not be stripped off
-static const char*
-StripTypeName(const char* name_cstr)
-{
-    const char* skip_namespace = strstr(name_cstr, "::");
-    const char* template_arg_char = strchr(name_cstr, '<');
-    while (skip_namespace != NULL)
-    {
-        if (template_arg_char != NULL &&
-            skip_namespace > template_arg_char) // but namespace'd template arguments are still good to go
-            break;
-        name_cstr = skip_namespace+2;
-        skip_namespace = strstr(name_cstr, "::");
-    }
-    return name_cstr;
-}
-
-uint32_t
-ModuleList::FindTypes (const SymbolContext& sc, const ConstString &name, bool append, uint32_t max_matches, TypeList& types)
-{
-    uint32_t retval = FindTypes_Impl(sc, name, append, max_matches, types);
-    
-    if (retval == 0)
-    {
-        const char *stripped = StripTypeName(name.GetCString());
-        return FindTypes_Impl(sc, ConstString(stripped), append, max_matches, types);
-    }
-    else
-        return retval;
-    
-}
-
 ModuleSP
 ModuleList::FindFirstModuleForFileSpec (const FileSpec &file_spec, 
                                         const ArchSpec *arch_ptr,





More information about the lldb-commits mailing list