Move the hash function to using and taking a StringRef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144024 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Christopher 2011-11-07 21:49:35 +00:00
parent e77546c3c3
commit 2dd5e1e64d

View File

@ -69,10 +69,10 @@ class DwarfAccelTable {
eHashFunctionDJB = 0u eHashFunctionDJB = 0u
}; };
static uint32_t HashDJB (const char *s) { static uint32_t HashDJB (StringRef Str) {
uint32_t h = 5381; uint32_t h = 5381;
for (unsigned char c = *s; c; c = *++s) for (unsigned i = 0, e = Str.size(); i != e; ++i)
h = ((h << 5) + h) + c; h = ((h << 5) + h) + Str[i];
return h; return h;
} }
@ -190,7 +190,7 @@ public:
MCSymbol *Sym; MCSymbol *Sym;
std::vector<uint32_t> DIEOffsets; // offsets std::vector<uint32_t> DIEOffsets; // offsets
HashData(StringRef S) : Str(S) { HashData(StringRef S) : Str(S) {
HashValue = DwarfAccelTable::HashDJB(S.str().c_str()); HashValue = DwarfAccelTable::HashDJB(S);
} }
void addOffset(uint32_t off) { DIEOffsets.push_back(off); } void addOffset(uint32_t off) { DIEOffsets.push_back(off); }
#ifndef NDEBUG #ifndef NDEBUG