On 2014-Apr-18, at 13:27, Justin Bogner <[email protected]> wrote:
> Author: bogner > Date: Fri Apr 18 15:27:24 2014 > New Revision: 206640 > > URL: http://llvm.org/viewvc/llvm-project?rev=206640&view=rev > Log: > Teach users of OnDiskHashTable to define hash_value and offset types > > This paves the way to making OnDiskHashTable work with hashes that are > not 32 bits wide and to making OnDiskHashTable work very large hash > tables. The LLVM change to use these types is upcoming. > > Modified: > cfe/trunk/lib/Frontend/CacheTokens.cpp > cfe/trunk/lib/Lex/PTHLexer.cpp > cfe/trunk/lib/Serialization/ASTReaderInternals.h > cfe/trunk/lib/Serialization/ASTWriter.cpp > cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp > > Modified: cfe/trunk/lib/Frontend/CacheTokens.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CacheTokens.cpp?rev=206640&r1=206639&r2=206640&view=diff > ============================================================================== > --- cfe/trunk/lib/Frontend/CacheTokens.cpp (original) > +++ cfe/trunk/lib/Frontend/CacheTokens.cpp Fri Apr 18 15:27:24 2014 > @@ -117,7 +117,10 @@ public: > typedef PTHEntry data_type; > typedef const PTHEntry& data_type_ref; > > - static unsigned ComputeHash(PTHEntryKeyVariant V) { > + typedef unsigned hash_value_type; > + typedef unsigned offset_type; > + > + static hash_value_type ComputeHash(PTHEntryKeyVariant V) { > return llvm::HashString(V.getString()); > } > > @@ -599,7 +602,10 @@ public: > typedef uint32_t data_type; > typedef data_type data_type_ref; > > - static unsigned ComputeHash(PTHIdKey* key) { > + typedef unsigned hash_value_type; > + typedef unsigned offset_type; > + > + static hash_value_type ComputeHash(PTHIdKey* key) { > return llvm::HashString(key->II->getName()); > } > > > Modified: cfe/trunk/lib/Lex/PTHLexer.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PTHLexer.cpp?rev=206640&r1=206639&r2=206640&view=diff > ============================================================================== > --- cfe/trunk/lib/Lex/PTHLexer.cpp (original) > +++ cfe/trunk/lib/Lex/PTHLexer.cpp Fri Apr 18 15:27:24 2014 > @@ -318,8 +318,10 @@ public: > class PTHFileLookupCommonTrait { > public: > typedef std::pair<unsigned char, const char*> internal_key_type; > + typedef unsigned hash_value_type; > + typedef unsigned offset_type; > > - static unsigned ComputeHash(internal_key_type x) { > + static hash_value_type ComputeHash(internal_key_type x) { > return llvm::HashString(x.second); > } > > @@ -363,13 +365,11 @@ public: > > class PTHStringLookupTrait { > public: > - typedef uint32_t > - data_type; > - > - typedef const std::pair<const char*, unsigned> > - external_key_type; > - > + typedef uint32_t data_type; > + typedef const std::pair<const char*, unsigned> external_key_type; > typedef external_key_type internal_key_type; > + typedef uint32_t hash_value_type; Looks to me like this one should be "unsigned", not "uint32_t", for consistency with the old ComputeHash. (Not sure it matters?) > + typedef unsigned offset_type; > > static bool EqualKey(const internal_key_type& a, > const internal_key_type& b) { > @@ -377,7 +377,7 @@ public: > : false; > } > > - static unsigned ComputeHash(const internal_key_type& a) { > + static hash_value_type ComputeHash(const internal_key_type& a) { > return llvm::HashString(StringRef(a.first, a.second)); > } > > > Modified: cfe/trunk/lib/Serialization/ASTReaderInternals.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReaderInternals.h?rev=206640&r1=206639&r2=206640&view=diff > ============================================================================== > --- cfe/trunk/lib/Serialization/ASTReaderInternals.h (original) > +++ cfe/trunk/lib/Serialization/ASTReaderInternals.h Fri Apr 18 15:27:24 2014 > @@ -46,6 +46,8 @@ public: > /// particular lookup t > typedef llvm::support::ulittle32_t LE32DeclID; > typedef std::pair<LE32DeclID *, LE32DeclID *> data_type; > + typedef unsigned hash_value_type; > + typedef unsigned offset_type; > > /// \brief Special internal key for declaration names. > /// The hash table creates keys for comparison; we do not create > @@ -67,7 +69,7 @@ public: > return a.Kind == b.Kind && a.Data == b.Data; > } > > - unsigned ComputeHash(const DeclNameKey &Key) const; > + hash_value_type ComputeHash(const DeclNameKey &Key) const; > internal_key_type GetInternalKey(const external_key_type& Name) const; > > static std::pair<unsigned, unsigned> > @@ -92,13 +94,14 @@ class ASTIdentifierLookupTraitBase { > public: > typedef StringRef external_key_type; > typedef StringRef internal_key_type; > - > + typedef unsigned hash_value_type; > + typedef unsigned offset_type; > > static bool EqualKey(const internal_key_type& a, const internal_key_type& > b) { > return a == b; > } > > - static unsigned ComputeHash(const internal_key_type& a); > + static hash_value_type ComputeHash(const internal_key_type& a); > > static std::pair<unsigned, unsigned> > ReadKeyDataLength(const unsigned char*& d); > @@ -160,6 +163,8 @@ public: > > typedef Selector external_key_type; > typedef external_key_type internal_key_type; > + typedef unsigned hash_value_type; > + typedef unsigned offset_type; > > ASTSelectorLookupTrait(ASTReader &Reader, ModuleFile &F) > : Reader(Reader), F(F) { } > @@ -169,7 +174,7 @@ public: > return a == b; > } > > - static unsigned ComputeHash(Selector Sel); > + static hash_value_type ComputeHash(Selector Sel); > > static const internal_key_type& > GetInternalKey(const external_key_type& x) { return x; } > @@ -211,12 +216,14 @@ public: > typedef const internal_key_type &internal_key_ref; > > typedef HeaderFileInfo data_type; > + typedef unsigned hash_value_type; > + typedef unsigned offset_type; > > HeaderFileInfoTrait(ASTReader &Reader, ModuleFile &M, HeaderSearch *HS, > const char *FrameworkStrings) > : Reader(Reader), M(M), HS(HS), FrameworkStrings(FrameworkStrings) { } > > - static unsigned ComputeHash(internal_key_ref ikey); > + static hash_value_type ComputeHash(internal_key_ref ikey); > static internal_key_type GetInternalKey(const FileEntry *FE); > bool EqualKey(internal_key_ref a, internal_key_ref b); > > > Modified: cfe/trunk/lib/Serialization/ASTWriter.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTWriter.cpp?rev=206640&r1=206639&r2=206640&view=diff > ============================================================================== > --- cfe/trunk/lib/Serialization/ASTWriter.cpp (original) > +++ cfe/trunk/lib/Serialization/ASTWriter.cpp Fri Apr 18 15:27:24 2014 > @@ -1482,8 +1482,10 @@ namespace { > > typedef HeaderFileInfo data_type; > typedef const data_type &data_type_ref; > + typedef unsigned hash_value_type; > + typedef unsigned offset_type; > > - static unsigned ComputeHash(key_type_ref key) { > + static hash_value_type ComputeHash(key_type_ref key) { > // The hash is based only on size/time of the file, so that the reader > can > // match even when symlinking or excess path elements ("foo/../", "../") > // change the form of the name. However, complete path is still the key. > @@ -1855,8 +1857,10 @@ public: > > typedef Data data_type; > typedef const data_type &data_type_ref; > + typedef unsigned hash_value_type; > + typedef unsigned offset_type; > > - static unsigned ComputeHash(IdentID IdID) { > + static hash_value_type ComputeHash(IdentID IdID) { > return llvm::hash_value(IdID); > } > > @@ -2738,9 +2742,12 @@ public: > }; > typedef const data_type& data_type_ref; > > + typedef unsigned hash_value_type; > + typedef unsigned offset_type; > + > explicit ASTMethodPoolTrait(ASTWriter &Writer) : Writer(Writer) { } > > - static unsigned ComputeHash(Selector Sel) { > + static hash_value_type ComputeHash(Selector Sel) { > return serialization::ComputeHash(Sel); > } > > @@ -3090,11 +3097,14 @@ public: > typedef IdentID data_type; > typedef data_type data_type_ref; > > + typedef unsigned hash_value_type; > + typedef unsigned offset_type; > + > ASTIdentifierTableTrait(ASTWriter &Writer, Preprocessor &PP, > IdentifierResolver &IdResolver, bool IsModule) > : Writer(Writer), PP(PP), IdResolver(IdResolver), IsModule(IsModule) { } > > - static unsigned ComputeHash(const IdentifierInfo* II) { > + static hash_value_type ComputeHash(const IdentifierInfo* II) { > return llvm::HashString(II->getName()); > } > > @@ -3349,9 +3359,12 @@ public: > typedef DeclContext::lookup_result data_type; > typedef const data_type& data_type_ref; > > + typedef unsigned hash_value_type; > + typedef unsigned offset_type; > + > explicit ASTDeclContextNameLookupTrait(ASTWriter &Writer) : Writer(Writer) > { } > > - unsigned ComputeHash(DeclarationName Name) { > + hash_value_type ComputeHash(DeclarationName Name) { > llvm::FoldingSetNodeID ID; > ID.AddInteger(Name.getNameKind()); > > > Modified: cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp?rev=206640&r1=206639&r2=206640&view=diff > ============================================================================== > --- cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp (original) > +++ cfe/trunk/lib/Serialization/GlobalModuleIndex.cpp Fri Apr 18 15:27:24 2014 > @@ -72,12 +72,14 @@ public: > typedef StringRef external_key_type; > typedef StringRef internal_key_type; > typedef SmallVector<unsigned, 2> data_type; > + typedef unsigned hash_value_type; > + typedef unsigned offset_type; > > static bool EqualKey(const internal_key_type& a, const internal_key_type& > b) { > return a == b; > } > > - static unsigned ComputeHash(const internal_key_type& a) { > + static hash_value_type ComputeHash(const internal_key_type& a) { > return llvm::HashString(a); > } > > @@ -645,8 +647,10 @@ public: > typedef StringRef key_type_ref; > typedef SmallVector<unsigned, 2> data_type; > typedef const SmallVector<unsigned, 2> &data_type_ref; > + typedef unsigned hash_value_type; > + typedef unsigned offset_type; > > - static unsigned ComputeHash(key_type_ref Key) { > + static hash_value_type ComputeHash(key_type_ref Key) { > return llvm::HashString(Key); > } > > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
