diff options
Diffstat (limited to 'clang/lib/Basic')
-rw-r--r-- | clang/lib/Basic/CMakeLists.txt | 1 | ||||
-rw-r--r-- | clang/lib/Basic/FileManager.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Basic/IdentifierTable.cpp | 159 | ||||
-rw-r--r-- | clang/lib/Basic/LangOptions.cpp | 60 | ||||
-rw-r--r-- | clang/lib/Basic/SourceLocation.cpp | 22 | ||||
-rw-r--r-- | clang/lib/Basic/SourceManager.cpp | 134 |
6 files changed, 1 insertions, 377 deletions
diff --git a/clang/lib/Basic/CMakeLists.txt b/clang/lib/Basic/CMakeLists.txt index a3731cb4946..1cbf11c2bfb 100644 --- a/clang/lib/Basic/CMakeLists.txt +++ b/clang/lib/Basic/CMakeLists.txt @@ -5,7 +5,6 @@ add_clang_library(clangBasic Diagnostic.cpp FileManager.cpp IdentifierTable.cpp - LangOptions.cpp SourceLocation.cpp SourceManager.cpp TargetInfo.cpp diff --git a/clang/lib/Basic/FileManager.cpp b/clang/lib/Basic/FileManager.cpp index 773d3666756..2cd140d95ed 100644 --- a/clang/lib/Basic/FileManager.cpp +++ b/clang/lib/Basic/FileManager.cpp @@ -19,8 +19,6 @@ #include "clang/Basic/FileManager.h" #include "llvm/ADT/SmallString.h" -#include "llvm/Bitcode/Serialize.h" -#include "llvm/Bitcode/Deserialize.h" #include "llvm/Support/Streams.h" #include "llvm/Config/config.h" using namespace clang; diff --git a/clang/lib/Basic/IdentifierTable.cpp b/clang/lib/Basic/IdentifierTable.cpp index 78758d71888..344c4eb18dc 100644 --- a/clang/lib/Basic/IdentifierTable.cpp +++ b/clang/lib/Basic/IdentifierTable.cpp @@ -16,8 +16,6 @@ #include "clang/Basic/LangOptions.h" #include "llvm/ADT/FoldingSet.h" #include "llvm/ADT/DenseMap.h" -#include "llvm/Bitcode/Serialize.h" -#include "llvm/Bitcode/Deserialize.h" #include <cstdio> using namespace clang; @@ -54,10 +52,6 @@ IdentifierTable::IdentifierTable(const LangOptions &LangOpts, AddKeywords(LangOpts); } -// This cstor is intended to be used only for serialization. -IdentifierTable::IdentifierTable() - : HashTable(8192), ExternalLookup(0) { } - //===----------------------------------------------------------------------===// // Language Keyword Implementation //===----------------------------------------------------------------------===// @@ -264,7 +258,6 @@ namespace clang { /// this class is provided strictly through Selector. class MultiKeywordSelector : public DeclarationNameExtra, public llvm::FoldingSetNode { - friend SelectorTable* SelectorTable::CreateAndRegister(llvm::Deserializer&); MultiKeywordSelector(unsigned nKeys) { ExtraKindOrNumArgs = NUM_EXTRA_KINDS + nKeys; } @@ -414,155 +407,3 @@ SelectorTable::~SelectorTable() { delete &getSelectorTableImpl(Impl); } -//===----------------------------------------------------------------------===// -// Serialization for IdentifierInfo and IdentifierTable. -//===----------------------------------------------------------------------===// - -void IdentifierInfo::Emit(llvm::Serializer& S) const { - S.EmitInt(getTokenID()); - S.EmitInt(getBuiltinID()); - S.EmitInt(getObjCKeywordID()); - S.EmitBool(hasMacroDefinition()); - S.EmitBool(isExtensionToken()); - S.EmitBool(isPoisoned()); - S.EmitBool(isCPlusPlusOperatorKeyword()); - // FIXME: FETokenInfo -} - -void IdentifierInfo::Read(llvm::Deserializer& D) { - setTokenID((tok::TokenKind) D.ReadInt()); - setBuiltinID(D.ReadInt()); - setObjCKeywordID((tok::ObjCKeywordKind) D.ReadInt()); - setHasMacroDefinition(D.ReadBool()); - setIsExtensionToken(D.ReadBool()); - setIsPoisoned(D.ReadBool()); - setIsCPlusPlusOperatorKeyword(D.ReadBool()); - // FIXME: FETokenInfo -} - -void IdentifierTable::Emit(llvm::Serializer& S) const { - S.EnterBlock(); - - S.EmitPtr(this); - - for (iterator I=begin(), E=end(); I != E; ++I) { - const char* Key = I->getKeyData(); - const IdentifierInfo* Info = I->getValue(); - - bool KeyRegistered = S.isRegistered(Key); - bool InfoRegistered = S.isRegistered(Info); - - if (KeyRegistered || InfoRegistered) { - // These acrobatics are so that we don't incur the cost of registering - // a pointer with the backpatcher during deserialization if nobody - // references the object. - S.EmitPtr(InfoRegistered ? Info : NULL); - S.EmitPtr(KeyRegistered ? Key : NULL); - S.EmitCStr(Key); - S.Emit(*Info); - } - } - - S.ExitBlock(); -} - -IdentifierTable* IdentifierTable::CreateAndRegister(llvm::Deserializer& D) { - llvm::Deserializer::Location BLoc = D.getCurrentBlockLocation(); - - std::vector<char> buff; - buff.reserve(200); - - IdentifierTable* t = new IdentifierTable(); - D.RegisterPtr(t); - - while (!D.FinishedBlock(BLoc)) { - llvm::SerializedPtrID InfoPtrID = D.ReadPtrID(); - llvm::SerializedPtrID KeyPtrID = D.ReadPtrID(); - - D.ReadCStr(buff); - IdentifierInfo *II = &t->get(&buff[0], &buff[0] + buff.size()); - II->Read(D); - - if (InfoPtrID) D.RegisterPtr(InfoPtrID, II); - if (KeyPtrID) D.RegisterPtr(KeyPtrID, II->getName()); - } - - return t; -} - -//===----------------------------------------------------------------------===// -// Serialization for Selector and SelectorTable. -//===----------------------------------------------------------------------===// - -void Selector::Emit(llvm::Serializer& S) const { - S.EmitInt(getIdentifierInfoFlag()); - S.EmitPtr(reinterpret_cast<void*>(InfoPtr & ~ArgFlags)); -} - -Selector Selector::ReadVal(llvm::Deserializer& D) { - unsigned flag = D.ReadInt(); - - uintptr_t ptr; - D.ReadUIntPtr(ptr,false); // No backpatching. - - return Selector(ptr | flag); -} - -void SelectorTable::Emit(llvm::Serializer& S) const { - typedef llvm::FoldingSet<MultiKeywordSelector>::iterator iterator; - llvm::FoldingSet<MultiKeywordSelector> *SelTab; - SelTab = static_cast<llvm::FoldingSet<MultiKeywordSelector> *>(Impl); - - S.EnterBlock(); - - S.EmitPtr(this); - - for (iterator I=SelTab->begin(), E=SelTab->end(); I != E; ++I) { - if (!S.isRegistered(&*I)) - continue; - - S.FlushRecord(); // Start a new record. - - S.EmitPtr(&*I); - S.EmitInt(I->getNumArgs()); - - for (MultiKeywordSelector::keyword_iterator KI = I->keyword_begin(), - KE = I->keyword_end(); KI != KE; ++KI) - S.EmitPtr(*KI); - } - - S.ExitBlock(); -} - -SelectorTable* SelectorTable::CreateAndRegister(llvm::Deserializer& D) { - llvm::Deserializer::Location BLoc = D.getCurrentBlockLocation(); - - SelectorTable* t = new SelectorTable(); - D.RegisterPtr(t); - - llvm::FoldingSet<MultiKeywordSelector>& SelTab = - *static_cast<llvm::FoldingSet<MultiKeywordSelector>*>(t->Impl); - - while (!D.FinishedBlock(BLoc)) { - - llvm::SerializedPtrID PtrID = D.ReadPtrID(); - unsigned nKeys = D.ReadInt(); - - MultiKeywordSelector *SI = - (MultiKeywordSelector*)malloc(sizeof(MultiKeywordSelector) + - nKeys*sizeof(IdentifierInfo *)); - - new (SI) MultiKeywordSelector(nKeys); - - D.RegisterPtr(PtrID,SI); - - IdentifierInfo **KeyInfo = reinterpret_cast<IdentifierInfo **>(SI+1); - - for (unsigned i = 0; i != nKeys; ++i) - D.ReadPtr(KeyInfo[i],false); - - SelTab.GetOrInsertNode(SI); - } - - return t; -} diff --git a/clang/lib/Basic/LangOptions.cpp b/clang/lib/Basic/LangOptions.cpp deleted file mode 100644 index 6119afc7906..00000000000 --- a/clang/lib/Basic/LangOptions.cpp +++ /dev/null @@ -1,60 +0,0 @@ -//===--- LangOptions.cpp - Language feature info --------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file implements the methods for LangOptions. -// -//===----------------------------------------------------------------------===// - -#include "clang/Basic/LangOptions.h" -#include "llvm/Bitcode/Serialize.h" -#include "llvm/Bitcode/Deserialize.h" - -using namespace clang; - -void LangOptions::Emit(llvm::Serializer& S) const { - S.EmitBool((bool) Trigraphs); - S.EmitBool((bool) BCPLComment); - S.EmitBool((bool) DollarIdents); - S.EmitBool((bool) Digraphs); - S.EmitBool((bool) HexFloats); - S.EmitBool((bool) C99); - S.EmitBool((bool) Microsoft); - S.EmitBool((bool) CPlusPlus); - S.EmitBool((bool) CPlusPlus0x); - S.EmitBool((bool) NoExtensions); - S.EmitBool((bool) CXXOperatorNames); - S.EmitBool((bool) ObjC1); - S.EmitBool((bool) ObjC2); - S.EmitBool((unsigned) GC); - S.EmitBool((bool) PascalStrings); - S.EmitBool((bool) Boolean); - S.EmitBool((bool) WritableStrings); - S.EmitBool((bool) LaxVectorConversions); -} - -void LangOptions::Read(llvm::Deserializer& D) { - Trigraphs = D.ReadBool() ? 1 : 0; - BCPLComment = D.ReadBool() ? 1 : 0; - DollarIdents = D.ReadBool() ? 1 : 0; - Digraphs = D.ReadBool() ? 1 : 0; - HexFloats = D.ReadBool() ? 1 : 0; - C99 = D.ReadBool() ? 1 : 0; - Microsoft = D.ReadBool() ? 1 : 0; - CPlusPlus = D.ReadBool() ? 1 : 0; - CPlusPlus0x = D.ReadBool() ? 1 : 0; - NoExtensions = D.ReadBool() ? 1 : 0; - CXXOperatorNames = D.ReadBool() ? 1 : 0; - ObjC1 = D.ReadBool() ? 1 : 0; - ObjC2 = D.ReadBool() ? 1 : 0; - GC = D.ReadInt(); - PascalStrings = D.ReadBool() ? 1 : 0; - Boolean = D.ReadBool() ? 1 : 0; - WritableStrings = D.ReadBool() ? 1 : 0; - LaxVectorConversions = D.ReadBool() ? 1 : 0; -} diff --git a/clang/lib/Basic/SourceLocation.cpp b/clang/lib/Basic/SourceLocation.cpp index 82e24d00a2a..f21ec8b1e9d 100644 --- a/clang/lib/Basic/SourceLocation.cpp +++ b/clang/lib/Basic/SourceLocation.cpp @@ -7,7 +7,6 @@ // //===----------------------------------------------------------------------===// // -// This file defines serialization methods for the SourceLocation class. // This file defines accessor methods for the FullSourceLoc class. // //===----------------------------------------------------------------------===// @@ -15,8 +14,6 @@ #include "clang/Basic/SourceLocation.h" #include "clang/Basic/PrettyStackTrace.h" #include "clang/Basic/SourceManager.h" -#include "llvm/Bitcode/Serialize.h" -#include "llvm/Bitcode/Deserialize.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/raw_ostream.h" #include <cstdio> @@ -38,14 +35,6 @@ void PrettyStackTraceLoc::print(llvm::raw_ostream &OS) const { // SourceLocation //===----------------------------------------------------------------------===// -void SourceLocation::Emit(llvm::Serializer& S) const { - S.EmitInt(getRawEncoding()); -} - -SourceLocation SourceLocation::ReadVal(llvm::Deserializer& D) { - return SourceLocation::getFromRawEncoding(D.ReadInt()); -} - void SourceLocation::print(llvm::raw_ostream &OS, const SourceManager &SM)const{ if (!isValid()) { OS << "<invalid loc>"; @@ -71,17 +60,6 @@ void SourceLocation::dump(const SourceManager &SM) const { print(llvm::errs(), SM); } -void SourceRange::Emit(llvm::Serializer& S) const { - B.Emit(S); - E.Emit(S); -} - -SourceRange SourceRange::ReadVal(llvm::Deserializer& D) { - SourceLocation A = SourceLocation::ReadVal(D); - SourceLocation B = SourceLocation::ReadVal(D); - return SourceRange(A,B); -} - //===----------------------------------------------------------------------===// // FullSourceLoc //===----------------------------------------------------------------------===// diff --git a/clang/lib/Basic/SourceManager.cpp b/clang/lib/Basic/SourceManager.cpp index ed541bfc6bc..9ed21635259 100644 --- a/clang/lib/Basic/SourceManager.cpp +++ b/clang/lib/Basic/SourceManager.cpp @@ -17,10 +17,9 @@ #include "llvm/Support/Compiler.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/System/Path.h" -#include "llvm/Bitcode/Serialize.h" -#include "llvm/Bitcode/Deserialize.h" #include "llvm/Support/Streams.h" #include <algorithm> +#include <iostream> using namespace clang; using namespace SrcMgr; using llvm::MemoryBuffer; @@ -866,134 +865,3 @@ void SourceManager::PrintStats() const { llvm::cerr << "FileID scans: " << NumLinearScans << " linear, " << NumBinaryProbes << " binary.\n"; } - -//===----------------------------------------------------------------------===// -// Serialization. -//===----------------------------------------------------------------------===// - -void ContentCache::Emit(llvm::Serializer& S) const { - S.FlushRecord(); - S.EmitPtr(this); - - if (Entry) { - llvm::sys::Path Fname(Buffer->getBufferIdentifier()); - - if (Fname.isAbsolute()) - S.EmitCStr(Fname.c_str()); - else { - // Create an absolute path. - // FIXME: This will potentially contain ".." and "." in the path. - llvm::sys::Path path = llvm::sys::Path::GetCurrentDirectory(); - path.appendComponent(Fname.c_str()); - S.EmitCStr(path.c_str()); - } - } - else { - const char* p = Buffer->getBufferStart(); - const char* e = Buffer->getBufferEnd(); - - S.EmitInt(e-p); - - for ( ; p != e; ++p) - S.EmitInt(*p); - } - - S.FlushRecord(); -} - -void ContentCache::ReadToSourceManager(llvm::Deserializer& D, - SourceManager& SMgr, - FileManager* FMgr, - std::vector<char>& Buf) { - if (FMgr) { - llvm::SerializedPtrID PtrID = D.ReadPtrID(); - D.ReadCStr(Buf,false); - - // Create/fetch the FileEntry. - const char* start = &Buf[0]; - const FileEntry* E = FMgr->getFile(start,start+Buf.size()); - - // FIXME: Ideally we want a lazy materialization of the ContentCache - // anyway, because we don't want to read in source files unless this - // is absolutely needed. - if (!E) - D.RegisterPtr(PtrID,NULL); - else - // Get the ContextCache object and register it with the deserializer. - D.RegisterPtr(PtrID, SMgr.getOrCreateContentCache(E)); - return; - } - - // Register the ContextCache object with the deserializer. - /* FIXME: - ContentCache *Entry - SMgr.MemBufferInfos.push_back(ContentCache()); - = const_cast<ContentCache&>(SMgr.MemBufferInfos.back()); - D.RegisterPtr(&Entry); - - // Create the buffer. - unsigned Size = D.ReadInt(); - Entry.Buffer = MemoryBuffer::getNewUninitMemBuffer(Size); - - // Read the contents of the buffer. - char* p = const_cast<char*>(Entry.Buffer->getBufferStart()); - for (unsigned i = 0; i < Size ; ++i) - p[i] = D.ReadInt(); - */ -} - -void SourceManager::Emit(llvm::Serializer& S) const { - S.EnterBlock(); - S.EmitPtr(this); - S.EmitInt(MainFileID.getOpaqueValue()); - - // Emit: FileInfos. Just emit the file name. - S.EnterBlock(); - - // FIXME: Emit FileInfos. - //std::for_each(FileInfos.begin(), FileInfos.end(), - // S.MakeEmitter<ContentCache>()); - - S.ExitBlock(); - - // Emit: MemBufferInfos - S.EnterBlock(); - - /* FIXME: EMIT. - std::for_each(MemBufferInfos.begin(), MemBufferInfos.end(), - S.MakeEmitter<ContentCache>()); - */ - - S.ExitBlock(); - - // FIXME: Emit SLocEntryTable. - - S.ExitBlock(); -} - -SourceManager* -SourceManager::CreateAndRegister(llvm::Deserializer &D, FileManager &FMgr) { - SourceManager *M = new SourceManager(); - D.RegisterPtr(M); - - // Read: the FileID of the main source file of the translation unit. - M->MainFileID = FileID::get(D.ReadInt()); - - std::vector<char> Buf; - - /*{ // FIXME Read: FileInfos. - llvm::Deserializer::Location BLoc = D.getCurrentBlockLocation(); - while (!D.FinishedBlock(BLoc)) - ContentCache::ReadToSourceManager(D,*M,&FMgr,Buf); - }*/ - - /*{ // FIXME Read: MemBufferInfos. - llvm::Deserializer::Location BLoc = D.getCurrentBlockLocation(); - while (!D.FinishedBlock(BLoc)) - ContentCache::ReadToSourceManager(D,*M,NULL,Buf); - }*/ - - // FIXME: Read SLocEntryTable. - - return M; -} |