History log of /external/lldb/include/lldb/Core/MappedHash.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
a8b56238ce138e70433a0ce0b4218c9257beae38 19-Jun-2013 Greg Clayton <gclayton@apple.com> Added the ability to get a list of types from a SBModule or SBCompileUnit. Sebastien Metrot wanted this, and sent a hollowed out patch. I filled in the blanks and did the low level implementation. The new functions are:

//------------------------------------------------------------------
/// Get all types matching \a type_mask from debug info in this
/// module.
///
/// @param[in] type_mask
/// A bitfield that consists of one or more bits logically OR'ed
/// together from the lldb::TypeClass enumeration. This allows
/// you to request only structure types, or only class, struct
/// and union types. Passing in lldb::eTypeClassAny will return
/// all types found in the debug information for this module.
///
/// @return
/// A list of types in this module that match \a type_mask
//------------------------------------------------------------------
lldb::SBTypeList
SBModule::GetTypes (uint32_t type_mask)


//------------------------------------------------------------------
/// Get all types matching \a type_mask from debug info in this
/// compile unit.
///
/// @param[in] type_mask
/// A bitfield that consists of one or more bits logically OR'ed
/// together from the lldb::TypeClass enumeration. This allows
/// you to request only structure types, or only class, struct
/// and union types. Passing in lldb::eTypeClassAny will return
/// all types found in the debug information for this compile
/// unit.
///
/// @return
/// A list of types in this compile unit that match \a type_mask
//------------------------------------------------------------------
lldb::SBTypeList
SBCompileUnit::GetTypes (uint32_t type_mask = lldb::eTypeClassAny);

This lets you request types by filling out a mask that contains one or more bits from the lldb::TypeClass enumerations, so you can only get the types you really want.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@184251 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Core/MappedHash.h
ce490e3161b17c3f2904d6e797bb5e5517d651c2 13-Feb-2013 Greg Clayton <gclayton@apple.com> <rdar://problem/13210494>

Parse objective C information as efficiently as possible and without taking dangerous runtime locks.

Reworked the way objective C information is parsed by:
1 - don't read all class names up front, this is about 500K of data with names
2 - add a 32 bit hash map that maps a hash of a name to the Class pointer (isa)
3 - Improved name lookups by using the new hash map
4 - split up reading the objc runtime info into dynamic and shared cache since the shared cache only needs to be read once.
5 - When reading all isa values, also get the 32 bit hash instead of the name
6 - Read names lazily now that we don't need all names up front
7 - Allow the hash maps to not be there and still have this function correctly

There is dead code in here with all of the various methods I tried. I want to check this in first to not lose any of it in case we need to revert to any of the extra code. I will promptly cleanup and commit again.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@175101 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Core/MappedHash.h
36da2aa6dc5ad9994b638ed09eb81c44cc05540b 25-Jan-2013 Greg Clayton <gclayton@apple.com> <rdar://problem/13069948>

Major fixed to allow reading files that are over 4GB. The main problems were that the DataExtractor was using 32 bit offsets as a data cursor, and since we mmap all of our object files we could run into cases where if we had a very large core file that was over 4GB, we were running into the 4GB boundary.

So I defined a new "lldb::offset_t" which should be used for all file offsets.

After making this change, I enabled warnings for data loss and for enexpected implicit conversions temporarily and found a ton of things that I fixed.

Any functions that take an index internally, should use "size_t" for any indexes and also should return "size_t" for any sizes of collections.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@173463 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Core/MappedHash.h
37bb8ddd443da172f42bb8657f15ec856a525c84 08-Dec-2011 Greg Clayton <gclayton@apple.com> Added a new class called lldb_private::SymbolFileType which is designed to
take a SymbolFile reference and a lldb::user_id_t and be used in objects
which represent things in debug symbols that have types where we don't need
to know the true type yet, such as in lldb_private::Variable objects. This
allows us to defer resolving the type until something is used. More specifically
this allows us to get 1000 local variables from the current function, and if
the user types "frame variable argc", we end up _only_ resolving the type for
"argc" and not for the 999 other local variables. We can expand the use of this
as needed in the future.

Modified the DWARFMappedHash class to be able to read the HashData that has
more than just the DIE offset. It currently will read the atoms in the header
definition and read the data correctly. Currently only the DIE offset and
type flags are supported. This is needed for adding type flags to the
.apple_types hash accelerator tables.

Fixed a assertion crash that would happen if we have a variable that had a
DW_AT_const_value instead of a location where "location.LocationContains_DW_OP_addr()"
would end up asserting when it tried to parse the variable location as a
DWARF opcode list.

Decreased the amount of memory that LLDB would use when evaluating an expression
by 3x - 4x for clang. There was a place in the namespace lookup code that was
parsing all namespaces with a certain name in a DWARF file instead of stopping
when it found the first match. This was causing all of the compile units with
a matching namespace to get parsed into memory and causing unnecessary memory
bloat.

Improved "Target::EvaluateExpression(...)" to not try and find a variable
when the expression contains characters that would certainly cause an expression
to need to be evaluated by the debugger.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@146130 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Core/MappedHash.h
ce04560e6affff2342d931cab4e904605119c742 28-Nov-2011 Greg Clayton <gclayton@apple.com> Remove incorrect return type from SetHeaderDataByteSize accessor (partial
patch from Dawn).



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@145212 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Core/MappedHash.h
22a3afd927a97026bd22b6023162439c59e6166d 11-Nov-2011 Greg Clayton <gclayton@apple.com> Allow the Apple hash tables to be emtpy.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@144353 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Core/MappedHash.h
f09a857961404d937463e9419dc3a8d019cae5f6 31-Oct-2011 Daniel Dunbar <daniel@zuster.org> warnings: Fix several uses of trailing comma on enumeration extensions.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@143380 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Core/MappedHash.h
bbe39167c881ac025cdc4f383ee8895cfd5b1148 21-Oct-2011 Greg Clayton <gclayton@apple.com> Fixed some issues where we might not have one of the new apple accelerator
tables (like the .apple_namespaces) and it would cause us to index DWARF that
didn't need to be indexed.

Updated the MappedHash.h (generic Apple accelerator table) and the DWARF
specific one (HashedNameToDIE.h) to be up to date with the latest and
greatest hash table format.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@142627 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Core/MappedHash.h
141f8d98cb74262914d66a7af4732e8cb2d8699f 12-Oct-2011 Greg Clayton <gclayton@apple.com> Fix preprocessor warnings for no newline at the end of the source files.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@141755 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Core/MappedHash.h
49e08e3b6ffa42a0148bad845c34da2c4fe603de 08-Oct-2011 Greg Clayton <gclayton@apple.com> Started on the export table for the MappedHash.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@141469 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Core/MappedHash.h
ff9a7e065cb72e24dc3629725ae7d1100b29acd4 05-Oct-2011 Greg Clayton <gclayton@apple.com> Added missing file.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@141130 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/include/lldb/Core/MappedHash.h