summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorEric Christopher <echristo@apple.com>2011-11-07 09:18:42 +0000
committerEric Christopher <echristo@apple.com>2011-11-07 09:18:42 +0000
commitbcbd3a4637f33036d05833364e180f9dfaabb67c (patch)
tree44a3d212cb1ef2ae0fc34b6b93a9a0656659bda8 /include
parentd8a8752d5b7f546fd7ebb295366a43b2b76afbd6 (diff)
downloadllvm-bcbd3a4637f33036d05833364e180f9dfaabb67c.tar.gz
llvm-bcbd3a4637f33036d05833364e180f9dfaabb67c.tar.bz2
llvm-bcbd3a4637f33036d05833364e180f9dfaabb67c.tar.xz
Add a new dwarf accelerator table prototype with the goal of replacing
the pubnames and pubtypes tables. LLDB can currently use this format and a full spec is forthcoming and submission for standardization is planned. A basic summary: The dwarf accelerator tables are an indirect hash table optimized for null lookup rather than access to known data. They are output into an on-disk format that looks like this: .-------------. | HEADER | |-------------| | BUCKETS | |-------------| | HASHES | |-------------| | OFFSETS | |-------------| | DATA | `-------------' where the header contains a magic number, version, type of hash function, the number of buckets, total number of hashes, and room for a special struct of data and the length of that struct. The buckets contain an index (e.g. 6) into the hashes array. The hashes section contains all of the 32-bit hash values in contiguous memory, and the offsets contain the offset into the data area for the particular hash. For a lookup example, we could hash a function name and take it modulo the number of buckets giving us our bucket. From there we take the bucket value as an index into the hashes table and look at each successive hash as long as the hash value is still the same modulo result (bucket value) as earlier. If we have a match we look at that same entry in the offsets table and grab the offset in the data for our final match. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143921 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions