diff options
| author | Eli Friedman <eli.friedman@gmail.com> | 2011-04-18 05:02:31 +0000 |
|---|---|---|
| committer | Eli Friedman <eli.friedman@gmail.com> | 2011-04-18 05:02:31 +0000 |
| commit | 0e40208d7bb3ff2cac8bad38a578bfe52e7d3ff8 (patch) | |
| tree | ffeeacac5d5587ec09348da9353b01be144ea5cf /llvm | |
| parent | 73a559fe93e7c683b2729db639056ee6c7f49815 (diff) | |
| download | bcm5719-llvm-0e40208d7bb3ff2cac8bad38a578bfe52e7d3ff8.tar.gz bcm5719-llvm-0e40208d7bb3ff2cac8bad38a578bfe52e7d3ff8.zip | |
Make the StringMaps attached to MCContext use the MCContext's allocator;
reduces the number of calls to malloc().
llvm-svn: 129687
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/include/llvm/MC/MCContext.h | 16 | ||||
| -rw-r--r-- | llvm/lib/MC/MCContext.cpp | 4 |
2 files changed, 11 insertions, 9 deletions
diff --git a/llvm/include/llvm/MC/MCContext.h b/llvm/include/llvm/MC/MCContext.h index f6279768ca2..070089e2c93 100644 --- a/llvm/include/llvm/MC/MCContext.h +++ b/llvm/include/llvm/MC/MCContext.h @@ -45,12 +45,18 @@ namespace llvm { const TargetAsmInfo *TAI; + /// Allocator - Allocator object used for creating machine code objects. + /// + /// We use a bump pointer allocator to avoid the need to track all allocated + /// objects. + BumpPtrAllocator Allocator; + /// Symbols - Bindings of names to symbols. - StringMap<MCSymbol*> Symbols; + StringMap<MCSymbol*, BumpPtrAllocator&> Symbols; /// UsedNames - Keeps tracks of names that were used both for used declared /// and artificial symbols. - StringMap<bool> UsedNames; + StringMap<bool, BumpPtrAllocator&> UsedNames; /// NextUniqueID - The next ID to dole out to an unnamed assembler temporary /// symbol. @@ -96,12 +102,6 @@ namespace llvm { /// the elements were added. std::vector<const MCSection *> MCLineSectionOrder; - /// Allocator - Allocator object used for creating machine code objects. - /// - /// We use a bump pointer allocator to avoid the need to track all allocated - /// objects. - BumpPtrAllocator Allocator; - void *MachOUniquingMap, *ELFUniquingMap, *COFFUniquingMap; MCSymbol *CreateSymbol(StringRef Name); diff --git a/llvm/lib/MC/MCContext.cpp b/llvm/lib/MC/MCContext.cpp index af8cd8eb141..8faa72ecb4e 100644 --- a/llvm/lib/MC/MCContext.cpp +++ b/llvm/lib/MC/MCContext.cpp @@ -27,7 +27,9 @@ typedef StringMap<const MCSectionCOFF*> COFFUniqueMapTy; MCContext::MCContext(const MCAsmInfo &mai, const TargetAsmInfo *tai) : - MAI(mai), TAI(tai), NextUniqueID(0), + MAI(mai), TAI(tai), + Allocator(), Symbols(Allocator), UsedNames(Allocator), + NextUniqueID(0), CurrentDwarfLoc(0,0,0,DWARF2_FLAG_IS_STMT,0,0), AllowTemporaryLabels(true) { MachOUniquingMap = 0; |

