Dramatically improves C++ demangling performance by introducing a new implementation...
authorKate Stone <katherine.stone@apple.com>
Tue, 22 Jul 2014 17:03:38 +0000 (17:03 +0000)
committerKate Stone <katherine.stone@apple.com>
Tue, 22 Jul 2014 17:03:38 +0000 (17:03 +0000)
commite2b218665221ca4d37dabb4204ddb2b3acfb4c4d
treeb767138bb2dc5f3fc4ddc3c8ba83e3645e174a5c
parentccc7090671cda0f1a6578988659b877b57d91ce5
Dramatically improves C++ demangling performance by introducing a new implementation that is much faster than the existing demangler.  While not yet complete, the new demangler will fail gracefully when it encounters symbols it isn’t prepared to deal with.  In these cases LLDB will fall back to using the full demangler to prevent a loss in functionality.  On sizable code bases the fast path succeeds 95% of the time, providing a significant net win.

The new implementation is located in source/Core/FastDemangle.cpp.  It’s fairly straightforward C code with a few basic C++ extensions.  It should compile with little or no change on a variety of platforms, but of course it is still only useful for symbols that comply with the Itanium ABI mangling spec (plus a few Clang extensions.)

<rdar://problem/15397553> <rdar://problem/15794867>

llvm-svn: 213671
lldb/lldb.xcodeproj/project.pbxproj
lldb/source/Core/CMakeLists.txt
lldb/source/Core/FastDemangle.cpp [new file with mode: 0644]
lldb/source/Core/Mangled.cpp