1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 03:23:01 +02:00
Go to file
Eric Christopher 1635d9449b 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.

llvm-svn: 143921
2011-11-07 09:18:42 +00:00
autoconf rename LLVM_HOSTTRIPLE into LLVM_DEFAULT_TARGET_TRIPLE 2011-11-01 21:31:44 +00:00
bindings build: Add initial cut at LLVMBuild.txt files. 2011-11-03 18:53:17 +00:00
cmake Fix CRT selection logic when using CMake NMake generator. 2011-11-06 23:37:22 +00:00
docs Release Notes: add a description of -enable-iv-rewrite. 2011-11-06 17:59:24 +00:00
examples build: Add initial cut at LLVMBuild.txt files. 2011-11-03 18:53:17 +00:00
include Add AVX2 variable shift instructions and intrinsics. 2011-11-07 08:26:24 +00:00
lib Add a new dwarf accelerator table prototype with the goal of replacing 2011-11-07 09:18:42 +00:00
projects build: Add initial cut at LLVMBuild.txt files. 2011-11-03 18:53:17 +00:00
runtime build: Add initial cut at LLVMBuild.txt files. 2011-11-03 18:53:17 +00:00
test Add AVX2 variable shift instructions and intrinsics. 2011-11-07 08:26:24 +00:00
tools Revert "llvm-config-2: Switch to using real library dependency table." while I 2011-11-06 19:57:04 +00:00
unittests Implement comparison operators for BranchProbability in a way that can't overflow INT64_MAX. 2011-10-24 13:50:56 +00:00
utils More AVX2 instructions and their intrinsics. 2011-11-06 23:04:08 +00:00
.gitignore Revert "Test commit" 2011-10-24 10:03:25 +00:00
CMakeLists.txt CMake should join the party in a post 3.0 world. ;] This brings CMake's 2011-11-05 21:18:59 +00:00
configure rename LLVM_HOSTTRIPLE into LLVM_DEFAULT_TARGET_TRIPLE 2011-11-01 21:31:44 +00:00
CREDITS.TXT CREDITS.TXT: Add a line. (test commit) 2011-10-29 23:42:14 +00:00
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt build: Add initial cut at LLVMBuild.txt files. 2011-11-03 18:53:17 +00:00
Makefile build/Make: Update for rename of show-diagnostics. 2011-11-02 19:48:19 +00:00
Makefile.common
Makefile.config.in Revert 142997. It doesn't work on Mac OS or the BSDs, which all use the BSD 2011-10-26 02:28:32 +00:00
Makefile.rules build/make: Fix the output path of the llvm-config-2 library dependency table. 2011-11-04 23:40:14 +00:00
README.txt Test. 2011-10-29 14:16:39 +00:00

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for the Low Level
Virtual Machine, a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the HTML documentation provided in docs/index.html for further
assistance with LLVM.

If you're writing a package for LLVM, see docs/Packaging.html for our
suggestions.