forked from OSchip/llvm-project
Remove an allocator which was used for just one allocation.
llvm-svn: 246662
This commit is contained in:
parent
1f1b067036
commit
fb497d79f6
|
@ -58,13 +58,11 @@ void ArchiveFile::parse() {
|
|||
|
||||
// Allocate a buffer for Lazy objects.
|
||||
size_t NumSyms = File->getNumberOfSymbols();
|
||||
size_t BufSize = NumSyms * sizeof(Lazy);
|
||||
Lazy *Buf = (Lazy *)Alloc.Allocate(BufSize, llvm::alignOf<Lazy>());
|
||||
LazySymbols.reserve(NumSyms);
|
||||
|
||||
// Read the symbol table to construct Lazy objects.
|
||||
for (const Archive::Symbol &Sym : File->symbols())
|
||||
LazySymbols.push_back(new (Buf++) Lazy(this, Sym));
|
||||
LazySymbols.emplace_back(this, Sym);
|
||||
|
||||
// Seen is a map from member files to boolean values. Initially
|
||||
// all members are mapped to false, which indicates all these files
|
||||
|
|
|
@ -98,7 +98,7 @@ public:
|
|||
// (So that we don't instantiate same members more than once.)
|
||||
MemoryBufferRef getMember(const Archive::Symbol *Sym);
|
||||
|
||||
std::vector<Lazy *> &getLazySymbols() { return LazySymbols; }
|
||||
llvm::MutableArrayRef<Lazy> getLazySymbols() { return LazySymbols; }
|
||||
|
||||
// All symbols returned by ArchiveFiles are of Lazy type.
|
||||
std::vector<SymbolBody *> &getSymbols() override {
|
||||
|
@ -108,9 +108,8 @@ public:
|
|||
private:
|
||||
std::unique_ptr<Archive> File;
|
||||
std::string Filename;
|
||||
std::vector<Lazy *> LazySymbols;
|
||||
std::vector<Lazy> LazySymbols;
|
||||
std::map<uint64_t, std::atomic_flag> Seen;
|
||||
llvm::MallocAllocator Alloc;
|
||||
};
|
||||
|
||||
// .obj or .o file. This may be a member of an archive file.
|
||||
|
|
|
@ -63,8 +63,8 @@ void SymbolTable::readArchives() {
|
|||
if (Config->Verbose)
|
||||
llvm::outs() << "Reading " << File->getShortName() << "\n";
|
||||
File->parse();
|
||||
for (Lazy *Sym : File->getLazySymbols())
|
||||
addLazy(Sym, &LazySyms);
|
||||
for (Lazy &Sym : File->getLazySymbols())
|
||||
addLazy(&Sym, &LazySyms);
|
||||
}
|
||||
ArchiveQueue.clear();
|
||||
|
||||
|
|
Loading…
Reference in New Issue