COFF: SymbolTable to manage symbols using BumpPtrAllocator.
authorRui Ueyama <ruiu@google.com>
Wed, 3 Jun 2015 05:39:12 +0000 (05:39 +0000)
committerRui Ueyama <ruiu@google.com>
Wed, 3 Jun 2015 05:39:12 +0000 (05:39 +0000)
llvm-svn: 238901

lld/COFF/SymbolTable.cpp
lld/COFF/SymbolTable.h

index 56298b9..015d707 100644 (file)
@@ -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<InputFile> File) {
@@ -192,7 +192,7 @@ ErrorOr<StringRef> 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<StringRef> 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<SymbolBody>(Body));
-  return resolve(Body);
-}
-
 void SymbolTable::dump() {
   for (auto &P : Symtab) {
     Symbol *Ref = P.second;
index bb50cd3..0c5e795 100644 (file)
@@ -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<StringRef, Symbol *> Symtab;
   std::vector<std::unique_ptr<ArchiveFile>> ArchiveFiles;
   std::vector<std::unique_ptr<BitcodeFile>> BitcodeFiles;
-  std::vector<std::unique_ptr<SymbolBody>> OwningSymbols;
   std::unique_ptr<MemoryBuffer> LTOObjectFile;
   llvm::BumpPtrAllocator Alloc;
 };