diff --git a/lib/Target/ARM/ARMCodeEmitter.cpp b/lib/Target/ARM/ARMCodeEmitter.cpp
index 0e93254..7aca1de 100644
--- a/lib/Target/ARM/ARMCodeEmitter.cpp
+++ b/lib/Target/ARM/ARMCodeEmitter.cpp
@@ -43,16 +43,17 @@
     const TargetData          *TD;
     TargetMachine             &TM;
     MachineCodeEmitter        &MCE;
-    const MachineConstantPool *MCP;
+    const std::vector<MachineConstantPoolEntry> *MCPEs;
+    
   public:
     static char ID;
     explicit ARMCodeEmitter(TargetMachine &tm, MachineCodeEmitter &mce)
       : MachineFunctionPass(&ID), JTI(0), II(0), TD(0), TM(tm),
-      MCE(mce), MCP(0) {}
+      MCE(mce), MCPEs(0) {}
     ARMCodeEmitter(TargetMachine &tm, MachineCodeEmitter &mce,
             const ARMInstrInfo &ii, const TargetData &td)
       : MachineFunctionPass(&ID), JTI(0), II(&ii), TD(&td), TM(tm),
-      MCE(mce), MCP(0) {}
+      MCE(mce), MCPEs(0) {}
 
     bool runOnMachineFunction(MachineFunction &MF);
 
@@ -153,7 +154,8 @@
   II = ((ARMTargetMachine&)MF.getTarget()).getInstrInfo();
   TD = ((ARMTargetMachine&)MF.getTarget()).getTargetData();
   JTI = ((ARMTargetMachine&)MF.getTarget()).getJITInfo();
-  MCP = MF.getConstantPool();
+  MCPEs = &MF.getConstantPool()->getConstants();
+  JTI->ResizeConstPoolMap(MCPEs->size());
 
   do {
     DOUT << "JITTing function '" << MF.getFunction()->getName() << "'\n";
@@ -264,7 +266,7 @@
 void ARMCodeEmitter::emitConstPoolInstruction(const MachineInstr &MI) {
   unsigned CPI = MI.getOperand(0).getImm();
   unsigned CPIndex = MI.getOperand(1).getIndex();
-  const MachineConstantPoolEntry &MCPE = MCP->getConstants()[CPIndex];
+  const MachineConstantPoolEntry &MCPE = (*MCPEs)[CPIndex];
   
   // Remember the CONSTPOOL_ENTRY address for later relocation.
   JTI->addConstantPoolEntryAddr(CPI, MCE.getCurrentPCValue());
diff --git a/lib/Target/ARM/ARMJITInfo.h b/lib/Target/ARM/ARMJITInfo.h
index f16e542..5f0ee8d 100644
--- a/lib/Target/ARM/ARMJITInfo.h
+++ b/lib/Target/ARM/ARMJITInfo.h
@@ -15,7 +15,7 @@
 #define ARMJITINFO_H
 
 #include "llvm/Target/TargetJITInfo.h"
-#include <map>
+#include "llvm/ADT/SmallVector.h"
 
 namespace llvm {
   class ARMTargetMachine;
@@ -25,7 +25,7 @@
 
     // ConstPoolId2AddrMap - A map from constant pool ids to the corresponding
     // CONSTPOOL_ENTRY addresses.
-    std::map<unsigned, intptr_t> ConstPoolId2AddrMap;
+    SmallVector<intptr_t, 32> ConstPoolId2AddrMap;
 
   public:
     explicit ARMJITInfo(ARMTargetMachine &tm) : TM(tm) { useGOT = false; }
@@ -56,21 +56,24 @@
     /// pool address resolution is handled by the target.
     virtual bool hasCustomConstantPool() const { return true; }
 
+    void ResizeConstPoolMap(unsigned Size) {
+      ConstPoolId2AddrMap.resize(Size);
+    }
+
     /// getConstantPoolEntryAddr - The ARM target puts all constant
     /// pool entries into constant islands. Resolve the constant pool index
     /// into the address where the constant is stored.
-    virtual intptr_t getConstantPoolEntryAddr(unsigned CPID) const {
-      std::map<unsigned, intptr_t>::const_iterator I
-        = ConstPoolId2AddrMap.find(CPID);
-      assert(I != ConstPoolId2AddrMap.end() && "Missing constpool_entry?");
-      return I->second;
+    intptr_t getConstantPoolEntryAddr(unsigned CPI) const {
+      assert(CPI < ConstPoolId2AddrMap.size());
+      return ConstPoolId2AddrMap[CPI];
     }
 
-    /// addConstantPoolEntryAddr - Map a Constant Pool Index (CPID) to the address
+    /// addConstantPoolEntryAddr - Map a Constant Pool Index (CPI) to the address
     /// where its associated value is stored. When relocations are processed,
     /// this value will be used to resolve references to the constant.
-    void addConstantPoolEntryAddr(unsigned CPID, intptr_t Addr) {
-      ConstPoolId2AddrMap[CPID] = Addr;
+    void addConstantPoolEntryAddr(unsigned CPI, intptr_t Addr) {
+      assert(CPI < ConstPoolId2AddrMap.size());
+      ConstPoolId2AddrMap[CPI] = Addr;
     }
   };
 }
