From a2bfb91c55a9baeb368dec97cd5971484b1d0656 Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Wed, 24 Oct 2007 19:06:02 +0000 Subject: [PATCH] Modified current clients of Bitcode-Object serialization to use the new split-header file configuration (Serialize.h and Deserialize.h) now in place in the core LLVM repository. Removed unneeded SerializeTrait specializations for enums in TokenKinds.h git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43306 91177308-0d34-0410-b5e6-96231b3b80d8 --- Basic/IdentifierTable.cpp | 59 ++++++++++++++------------- Basic/TokenKinds.cpp | 36 +--------------- Driver/SerializationTest.cpp | 3 +- include/clang/Basic/IdentifierTable.h | 18 +++----- include/clang/Basic/TokenKinds.h | 29 ------------- 5 files changed, 40 insertions(+), 105 deletions(-) diff --git a/Basic/IdentifierTable.cpp b/Basic/IdentifierTable.cpp index 760dcf4349..bbab868267 100644 --- a/Basic/IdentifierTable.cpp +++ b/Basic/IdentifierTable.cpp @@ -16,7 +16,8 @@ #include "clang/Basic/LangOptions.h" #include "llvm/ADT/FoldingSet.h" #include "llvm/ADT/DenseMap.h" -#include "llvm/Bitcode/Serialization.h" +#include "llvm/Bitcode/Serialize.h" +#include "llvm/Bitcode/Deserialize.h" using namespace clang; @@ -381,30 +382,25 @@ SelectorTable::~SelectorTable() { // Serialization for IdentifierInfo and IdentifierTable. //===----------------------------------------------------------------------===// -void llvm::SerializeTrait::Serialize(llvm::Serializer& S, +void llvm::SerializeTrait::Emit(llvm::Serializer& S, const IdentifierInfo& I) { - S.Emit(I.getTokenID()); - S.EmitInt(I.getBuiltinID(),9); - S.Emit(I.getObjCKeywordID()); - S.Emit(I.hasMacroDefinition()); - S.Emit(I.isExtensionToken()); - S.Emit(I.isPoisoned()); - S.Emit(I.isOtherTargetMacro()); - S.Emit(I.isCPlusPlusOperatorKeyword()); - S.Emit(I.isNonPortableBuiltin()); + S.EmitInt(I.getTokenID()); + S.EmitInt(I.getBuiltinID()); + S.EmitInt(I.getObjCKeywordID()); + S.EmitBool(I.hasMacroDefinition()); + S.EmitBool(I.isExtensionToken()); + S.EmitBool(I.isPoisoned()); + S.EmitBool(I.isOtherTargetMacro()); + S.EmitBool(I.isCPlusPlusOperatorKeyword()); + S.EmitBool(I.isNonPortableBuiltin()); } -void llvm::SerializeTrait::Deserialize(llvm::Deserializer& D, - IdentifierInfo& I) { - tok::TokenKind X; - I.setTokenID(D.Read(X)); - - I.setBuiltinID(D.ReadInt(9)); - - tok::ObjCKeywordKind Y; - I.setObjCKeywordID(D.Read(Y)); - +void llvm::SerializeTrait::Read(llvm::Deserializer& D, + IdentifierInfo& I) { + I.setTokenID((tok::TokenKind) D.ReadInt()); + I.setBuiltinID(D.ReadInt()); + I.setObjCKeywordID((tok::ObjCKeywordKind) D.ReadInt()); I.setHasMacroDefinition(D.ReadBool()); I.setIsExtensionToken(D.ReadBool()); I.setIsPoisoned(D.ReadBool()); @@ -413,27 +409,34 @@ void llvm::SerializeTrait::Deserialize(llvm::Deserializer& D, I.setNonPortableBuiltin(D.ReadBool()); } -void llvm::SerializeTrait::Serialize(llvm::Serializer& S, - const IdentifierTable& T){ +void llvm::SerializeTrait::Emit(llvm::Serializer& S, + const IdentifierTable& T){ S.Emit(T.size()); for (clang::IdentifierTable::iterator I=T.begin(), E=T.end(); I != E; ++I) { - S.EmitCString(I->getKeyData()); + S.EmitCStr(I->getKeyData()); S.Emit(I->getValue()); } } -void llvm::SerializeTrait::Deserialize(llvm::Deserializer& D, - IdentifierTable& T) { +void llvm::SerializeTrait::Read(llvm::Deserializer& D, + IdentifierTable& T) { unsigned len = D.ReadInt(); std::vector buff; buff.reserve(200); for (unsigned i = 0; i < len; ++i) { - D.ReadCString(buff); + D.ReadCStr(buff); IdentifierInfo& Info = T.get(&buff[0],&buff[0]+buff.size()); D.Read(Info); } } - + +IdentifierTable* +llvm::SerializeTrait::Materialize(llvm::Deserializer& D) +{ + IdentifierTable* t = new IdentifierTable(); + D.Read(*t); + return t; +} diff --git a/Basic/TokenKinds.cpp b/Basic/TokenKinds.cpp index f1c1e9f678..324a72d844 100644 --- a/Basic/TokenKinds.cpp +++ b/Basic/TokenKinds.cpp @@ -12,7 +12,7 @@ //===----------------------------------------------------------------------===// #include "clang/Basic/TokenKinds.h" -#include "llvm/Bitcode/Serialization.h" + #include using namespace clang; @@ -27,37 +27,3 @@ const char *tok::getTokenName(enum TokenKind Kind) { assert(Kind < tok::NUM_TOKENS); return TokNames[Kind]; } - -// Serialization traits for TokenKind, PPKeywordKind, and ObjCKeywordKind - -void llvm::SerializeTrait::Serialize(llvm::Serializer& S, - tok::TokenKind X) { - S.EmitEnum(X,0,tok::NUM_TOKENS-1); -} - -void llvm::SerializeTrait::Deserialize(llvm::Deserializer& D, - tok::TokenKind& X) { - X = D.ReadEnum(0,tok::NUM_TOKENS-1); -} - -void llvm::SerializeTrait::Serialize(llvm::Serializer& S, - tok::PPKeywordKind X) { - S.EmitEnum(X,0,tok::NUM_PP_KEYWORDS-1); -} - -void llvm::SerializeTrait::Deserialize(llvm::Deserializer& D, - tok::PPKeywordKind& X) { - X = D.ReadEnum(0,tok::NUM_PP_KEYWORDS-1); -} - -void -llvm::SerializeTrait::Serialize(llvm::Serializer& S, - tok::ObjCKeywordKind X) { - S.EmitEnum(X,0,tok::NUM_OBJC_KEYWORDS-1); -} - -void -llvm::SerializeTrait::Deserialize(llvm::Deserializer& D, - tok::ObjCKeywordKind& X) { - X = D.ReadEnum(0,tok::NUM_OBJC_KEYWORDS-1); -} \ No newline at end of file diff --git a/Driver/SerializationTest.cpp b/Driver/SerializationTest.cpp index 811dddbb74..26a4df85d8 100644 --- a/Driver/SerializationTest.cpp +++ b/Driver/SerializationTest.cpp @@ -21,7 +21,8 @@ #include "llvm/System/Path.h" #include "llvm/Support/Streams.h" #include "llvm/Support/MemoryBuffer.h" -#include "llvm/Bitcode/Serialization.h" +#include "llvm/Bitcode/Serialize.h" +#include "llvm/Bitcode/Deserialize.h" #include //===----------------------------------------------------------------------===// diff --git a/include/clang/Basic/IdentifierTable.h b/include/clang/Basic/IdentifierTable.h index 8e68fd1f01..b505176c04 100644 --- a/include/clang/Basic/IdentifierTable.h +++ b/include/clang/Basic/IdentifierTable.h @@ -18,15 +18,12 @@ #include "clang/Basic/TokenKinds.h" #include "llvm/ADT/StringMap.h" #include "llvm/ADT/SmallString.h" +#include "llvm/Bitcode/Serialization.h" #include #include - namespace llvm { template struct DenseMapInfo; - template struct SerializeTrait; - class Serializer; - class Deserializer; } namespace clang { @@ -311,21 +308,18 @@ struct DenseMapInfo { /// Define SerializeTrait to enable serialization for IdentifierInfos. template <> struct SerializeTrait { - static void Serialize(llvm::Serializer& S, const clang::IdentifierInfo& I); - static void Deserialize(llvm::Deserializer& S, clang::IdentifierInfo& I); + static void Emit(Serializer& S, const clang::IdentifierInfo& I); + static void Read(Deserializer& S, clang::IdentifierInfo& I); }; /// Define SerializeTrait to enable serialization for IdentifierTables. template <> struct SerializeTrait { - static void Serialize(llvm::Serializer& S, const clang::IdentifierTable& X); - static void Deserialize(llvm::Deserializer& S, clang::IdentifierTable& X); + static void Emit(Serializer& S, const clang::IdentifierTable& X); + static void Read(Deserializer& S, clang::IdentifierTable& X); private: - static inline clang::IdentifierTable* Instantiate() { - return new clang::IdentifierTable(); - } - + static clang::IdentifierTable* Materialize(Deserializer& D); friend class Deserializer; }; diff --git a/include/clang/Basic/TokenKinds.h b/include/clang/Basic/TokenKinds.h index 2e213bddf1..e51f0c7f8a 100644 --- a/include/clang/Basic/TokenKinds.h +++ b/include/clang/Basic/TokenKinds.h @@ -48,33 +48,4 @@ const char *getTokenName(enum TokenKind Kind); } // end namespace tok } // end namespace clang -//===----------------------------------------------------------------------===// -// Serialization traits. -//===----------------------------------------------------------------------===// - -namespace llvm { - template struct SerializeTrait; - class Serializer; - class Deserializer; - -template<> -struct SerializeTrait { - static void Serialize(llvm::Serializer& S, clang::tok::TokenKind X); - static void Deserialize(llvm::Deserializer& D, clang::tok::TokenKind& X); -}; - -template<> -struct SerializeTrait { - static void Serialize(llvm::Serializer& S, clang::tok::PPKeywordKind X); - static void Deserialize(llvm::Deserializer& D, clang::tok::PPKeywordKind& X); -}; - -template<> -struct SerializeTrait { - static void Serialize(llvm::Serializer& S, clang::tok::ObjCKeywordKind X); - static void Deserialize(llvm::Deserializer& D, clang::tok::ObjCKeywordKind& X); -}; - -} // end namespace llvm - #endif -- 2.40.0