Add support for on-disk hash table lookup with a known hash, for situations where the same key will be looked up in multiple tables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242179 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Richard Smith 2015-07-14 18:40:59 +00:00
parent 3498c348c1
commit 77906b9964

View File

@ -280,13 +280,19 @@ public:
};
/// \brief Look up the stored data for a particular key.
iterator find(const external_key_type &EKey, Info *InfoPtr = 0) {
if (!InfoPtr)
InfoPtr = &InfoObj;
using namespace llvm::support;
iterator find(const external_key_type &EKey, Info *InfoPtr = nullptr) {
const internal_key_type &IKey = InfoObj.GetInternalKey(EKey);
hash_value_type KeyHash = InfoObj.ComputeHash(IKey);
return find_hashed(IKey, KeyHash, InfoPtr);
}
/// \brief Look up the stored data for a particular key with a known hash.
iterator find_hashed(const internal_key_type &IKey, hash_value_type KeyHash,
Info *InfoPtr = nullptr) {
using namespace llvm::support;
if (!InfoPtr)
InfoPtr = &InfoObj;
// Each bucket is just an offset into the hash table file.
offset_type Idx = KeyHash & (NumBuckets - 1);