[patch] Simplify memory allocation
Rafael EspĂndola via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 2 08:58:47 PDT 2015
This removes an allocator that is only ever used for a single allocation.
Cheers,
Rafael
-------------- next part --------------
diff --git a/COFF/InputFiles.cpp b/COFF/InputFiles.cpp
index 273e6d3..a8a35a5 100644
--- a/COFF/InputFiles.cpp
+++ b/COFF/InputFiles.cpp
@@ -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
diff --git a/COFF/InputFiles.h b/COFF/InputFiles.h
index a3a9bd9..4f93a67 100644
--- a/COFF/InputFiles.h
+++ b/COFF/InputFiles.h
@@ -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.
diff --git a/COFF/SymbolTable.cpp b/COFF/SymbolTable.cpp
index 47b91f5..c15f68a 100644
--- a/COFF/SymbolTable.cpp
+++ b/COFF/SymbolTable.cpp
@@ -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();
More information about the llvm-commits
mailing list