summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2011-04-18 05:02:31 +0000
committerEli Friedman <eli.friedman@gmail.com>2011-04-18 05:02:31 +0000
commit0e40208d7bb3ff2cac8bad38a578bfe52e7d3ff8 (patch)
treeffeeacac5d5587ec09348da9353b01be144ea5cf /llvm
parent73a559fe93e7c683b2729db639056ee6c7f49815 (diff)
downloadbcm5719-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.h16
-rw-r--r--llvm/lib/MC/MCContext.cpp4
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;
OpenPOWER on IntegriCloud