From 07e661f8cd5d796466212057244016f0f4dbfbae Mon Sep 17 00:00:00 2001 From: Rui Ueyama Date: Wed, 3 Jun 2015 05:39:12 +0000 Subject: [PATCH] COFF: SymbolTable to manage symbols using BumpPtrAllocator. llvm-svn: 238901 --- lld/COFF/SymbolTable.cpp | 13 ++++--------- lld/COFF/SymbolTable.h | 2 -- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/lld/COFF/SymbolTable.cpp b/lld/COFF/SymbolTable.cpp index 56298b9..015d707 100644 --- a/lld/COFF/SymbolTable.cpp +++ b/lld/COFF/SymbolTable.cpp @@ -22,9 +22,9 @@ namespace lld { namespace coff { SymbolTable::SymbolTable() { - addSymbol(new DefinedAbsolute("__ImageBase", Config->ImageBase)); + resolve(new (Alloc) DefinedAbsolute("__ImageBase", Config->ImageBase)); if (!Config->EntryName.empty()) - addUndefined(Config->EntryName); + resolve(new (Alloc) Undefined(Config->EntryName)); } std::error_code SymbolTable::addFile(std::unique_ptr File) { @@ -192,7 +192,7 @@ ErrorOr SymbolTable::findDefaultEntry() { return StringRef(E[1]); if (!find(E[0])) continue; - if (auto EC = addSymbol(new Undefined(E[1]))) + if (auto EC = resolve(new (Alloc) Undefined(E[1]))) return EC; return StringRef(E[1]); } @@ -201,7 +201,7 @@ ErrorOr SymbolTable::findDefaultEntry() { } std::error_code SymbolTable::addUndefined(StringRef Name) { - return addSymbol(new Undefined(Name)); + return resolve(new (Alloc) Undefined(Name)); } // Resolve To, and make From an alias to To. @@ -213,11 +213,6 @@ std::error_code SymbolTable::rename(StringRef From, StringRef To) { return std::error_code(); } -std::error_code SymbolTable::addSymbol(SymbolBody *Body) { - OwningSymbols.push_back(std::unique_ptr(Body)); - return resolve(Body); -} - void SymbolTable::dump() { for (auto &P : Symtab) { Symbol *Ref = P.second; diff --git a/lld/COFF/SymbolTable.h b/lld/COFF/SymbolTable.h index bb50cd3..0c5e795 100644 --- a/lld/COFF/SymbolTable.h +++ b/lld/COFF/SymbolTable.h @@ -84,12 +84,10 @@ private: std::error_code resolve(SymbolBody *Body); std::error_code addMemberFile(Lazy *Body); - std::error_code addSymbol(SymbolBody *Body); std::unordered_map Symtab; std::vector> ArchiveFiles; std::vector> BitcodeFiles; - std::vector> OwningSymbols; std::unique_ptr LTOObjectFile; llvm::BumpPtrAllocator Alloc; }; -- 2.7.4