[llvm-commits] [lld] r150547 - in /lld/trunk: include/lld/Core/SymbolTable.h lib/Core/SymbolTable.cpp

Nick Kledzik kledzik at apple.com
Tue Feb 14 16:50:07 PST 2012


Author: kledzik
Date: Tue Feb 14 18:50:07 2012
New Revision: 150547

URL: http://llvm.org/viewvc/llvm-project?rev=150547&view=rev
Log:
use llvm::DenseMap instead of std::map

Modified:
    lld/trunk/include/lld/Core/SymbolTable.h
    lld/trunk/lib/Core/SymbolTable.cpp

Modified: lld/trunk/include/lld/Core/SymbolTable.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Core/SymbolTable.h?rev=150547&r1=150546&r2=150547&view=diff
==============================================================================
--- lld/trunk/include/lld/Core/SymbolTable.h (original)
+++ lld/trunk/include/lld/Core/SymbolTable.h Tue Feb 14 18:50:07 2012
@@ -16,6 +16,7 @@
 
 #include "llvm/ADT/StringRef.h"
 #include "llvm/ADT/DenseSet.h"
+#include "llvm/ADT/StringExtras.h"
 
 
 namespace lld {
@@ -57,16 +58,27 @@
   const Atom *replacement(const Atom *);
 
 private:
-  typedef std::map<llvm::StringRef, const Atom *> NameToAtom;
-  typedef std::map<const Atom *, const Atom *> AtomToAtom;
-  struct MyMappingInfo {
+  typedef llvm::DenseMap<const Atom *, const Atom *> AtomToAtom;
+
+  struct StringRefMappingInfo {
+    static llvm::StringRef getEmptyKey() { return llvm::StringRef(); }
+    static llvm::StringRef getTombstoneKey() { return llvm::StringRef(" ", 0); }
+    static unsigned getHashValue(llvm::StringRef const val) {
+                                               return llvm::HashString(val); }
+    static bool isEqual(llvm::StringRef const lhs, 
+                        llvm::StringRef const rhs) { return lhs.equals(rhs); }
+  };
+	typedef llvm::DenseMap<llvm::StringRef, const Atom *, 
+                                           StringRefMappingInfo> NameToAtom;
+  
+  struct AtomMappingInfo {
     static const DefinedAtom * getEmptyKey() { return NULL; }
     static const DefinedAtom * getTombstoneKey() { return (DefinedAtom*)(-1); }
     static unsigned getHashValue(const DefinedAtom * const Val);
     static bool isEqual(const DefinedAtom * const LHS, 
                         const DefinedAtom * const RHS);
   };
-  typedef llvm::DenseSet<const DefinedAtom*, MyMappingInfo> AtomContentSet;
+  typedef llvm::DenseSet<const DefinedAtom*, AtomMappingInfo> AtomContentSet;
 
   void addByName(const Atom &);
   void addByContent(const DefinedAtom &);

Modified: lld/trunk/lib/Core/SymbolTable.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Core/SymbolTable.cpp?rev=150547&r1=150546&r2=150547&view=diff
==============================================================================
--- lld/trunk/lib/Core/SymbolTable.cpp (original)
+++ lld/trunk/lib/Core/SymbolTable.cpp Tue Feb 14 18:50:07 2012
@@ -165,7 +165,7 @@
 }
 
 
-unsigned SymbolTable::MyMappingInfo::getHashValue(const DefinedAtom * const atom) {
+unsigned SymbolTable::AtomMappingInfo::getHashValue(const DefinedAtom * const atom) {
   unsigned hash = atom->size();
   if ( atom->contentType() != DefinedAtom::typeZeroFill ) {
     llvm::ArrayRef<uint8_t> content = atom->rawContent();
@@ -180,7 +180,7 @@
 }
 
 
-bool SymbolTable::MyMappingInfo::isEqual(const DefinedAtom * const l, 
+bool SymbolTable::AtomMappingInfo::isEqual(const DefinedAtom * const l, 
                                          const DefinedAtom * const r) {
   if ( l == r )
     return true;





More information about the llvm-commits mailing list