llvm-project/lldb/source/Symbol
Greg Clayton bc63aaccf7 Optimize finding the Complete Definition of an ObjC class for debug with .o files with lots of .o files.
When we have a debug map we have an executable with a bunch of STAB symbols and each source file has a N_SO symbol which scopes a bunch of symbols inside of it. We can use this to our advantage here when looking for the complete definition of an objective C class by looking for a symbol whose name matches the class name and whose type is eSymbolTypeObjCClass. If we find one, that symbol will be contained within a N_SO symbol. This symbol gets turned into a symbol whose type is eSymbolTypeSourceFile and that symbol will contain the eSymbolTypeObjCClass which helps us to locate the correct .o file and allows us to only look in that file.

To further accelerate things, if we are looking for the implementation, we can avoid looking at all .o files if we don't find a matching symbol because we have a debug map, which means the objective C symbol for the class can't have been stripped, so we can safely not search all remaining .o files. This will save us lots of time when trying to look for "NSObject" and any other AppKit and Foundation classes that we never have implementation definitions for.

<rdar://problem/19234225>

llvm-svn: 230562
2015-02-25 22:41:34 +00:00
..
Block.cpp Switch NULL to C++11 nullptr in source/Symbol and source/Utility 2014-04-20 13:17:36 +00:00
CMakeLists.txt The lldb unwinder can now use the unwind information from the compact-unwind 2014-12-08 03:09:00 +00:00
ClangASTContext.cpp Fixed bugs in the multi-threaded access in HostInfoBase. Prior to this fix, static bool variables were used but this is not sufficient. We now use std::call_once in all places where the previous static bool code was used to try to implement thread safety. 2015-02-03 02:05:44 +00:00
ClangASTImporter.cpp Give user_id a default invalid value so we don't 2014-10-15 23:27:12 +00:00
ClangASTType.cpp Make a more complete fix for always supplying an execution context when getting byte sizes from types. 2015-02-12 00:34:25 +00:00
ClangExternalASTSourceCallbacks.cpp Fix typos. 2014-07-01 21:22:11 +00:00
ClangExternalASTSourceCommon.cpp Fixed an unfortunate reversed conditional that 2014-12-06 02:31:49 +00:00
ClangNamespaceDecl.cpp Added a packet history object to the GDBRemoteCommunication class that is always remembering the last 512 packets that were sent/received. These packets get dumped if logging gets enabled, or when the new expr lldb::DumpProcessGDBRemotePacketHistory (void *process, const char *log_file_path) global function is called. 2012-04-09 22:46:21 +00:00
CompactUnwindInfo.cpp UnwindPlan::Row refactor -- add support for CFA set by a DWARF expression 2015-02-23 10:19:16 +00:00
CompileUnit.cpp For some reason, sometimes the directory paths that clang emits have internal 2014-11-15 01:54:26 +00:00
DWARFCallFrameInfo.cpp Support evaluation of DWARF expressions setting CFA 2015-02-23 10:29:01 +00:00
Declaration.cpp For some reason, sometimes the directory paths that clang emits have internal 2014-11-15 01:54:26 +00:00
FuncUnwinders.cpp Various unwinder work. 2014-12-21 10:44:54 +00:00
Function.cpp Switch NULL to C++11 nullptr in source/Symbol and source/Utility 2014-04-20 13:17:36 +00:00
LineEntry.cpp DWARF says line number 0 is a valid line number - used to indicate a source line that should 2013-09-27 01:15:46 +00:00
LineTable.cpp Fixed a problem where we might omit some breakpoints when using DWARF in .o files. 2015-02-10 16:53:40 +00:00
Makefile
ObjectFile.cpp The lldb unwinder can now use the unwind information from the compact-unwind 2014-12-08 03:09:00 +00:00
Symbol.cpp Optimize finding the Complete Definition of an ObjC class for debug with .o files with lots of .o files. 2015-02-25 22:41:34 +00:00
SymbolContext.cpp Change the default disassembly format again. First attempt at 2015-02-13 23:24:21 +00:00
SymbolFile.cpp Switch NULL to C++11 nullptr in source/Symbol and source/Utility 2014-04-20 13:17:36 +00:00
SymbolVendor.cpp When adding a dSYM to an existing ObjectFile, we can have a situation 2014-08-22 02:46:46 +00:00
Symtab.cpp Optimize finding the Complete Definition of an ObjC class for debug with .o files with lots of .o files. 2015-02-25 22:41:34 +00:00
Type.cpp Preparatory infrastructural work to support dynamically determining sizes of ObjC types via the runtime 2015-01-28 00:07:51 +00:00
TypeList.cpp cleanup unreferenced functions 2014-03-20 06:08:36 +00:00
UnwindPlan.cpp Support evaluation of DWARF expressions setting CFA 2015-02-23 10:29:01 +00:00
UnwindTable.cpp The lldb unwinder can now use the unwind information from the compact-unwind 2014-12-08 03:09:00 +00:00
Variable.cpp Change the default disassembly format again. First attempt at 2015-02-13 23:24:21 +00:00
VariableList.cpp Restore the ability of SBFrame::FindValue() to look for file global variables 2014-02-19 19:35:13 +00:00
VerifyDecl.cpp Added VerifyDecl, a function that, when LLDB is 2011-10-26 01:06:27 +00:00