Fix typeo. grow() cannot shrink storage. clear() should really nuke storage
authorChris Lattner <sabre@nondot.org>
Thu, 26 Feb 2004 04:07:12 +0000 (04:07 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 26 Feb 2004 04:07:12 +0000 (04:07 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11865 91177308-0d34-0410-b5e6-96231b3b80d8

include/Support/DenseMap.h
include/llvm/ADT/DenseMap.h
include/llvm/ADT/IndexedMap.h

index 5fcdfae9dea71235f54e14e1b8ecc9fee3cda8ac..9d713d97c363f49176dfa65c60af1da5ea8b4f62 100644 (file)
@@ -9,7 +9,7 @@
 //
 // This file implements a dense map. A dense map template takes two
 // types. The first is the mapped type and the second is a functor
-// that maps its argument to a size_t. On instanciation a "null" value
+// that maps its argument to a size_t. On instantiation a "null" value
 // can be provided to be used as a "does not exist" indicator in the
 // map. A member function grow() is provided that given the value of
 // the maximally indexed key (the argument of the functor) makes sure
@@ -48,11 +48,13 @@ public:
     }
 
     void clear() {
-        storage_.assign(storage_.size(), nullVal_);
+        storage_.clear();
     }
 
     void grow(IndexT n) {
-        storage_.resize(toIndex_(n) + 1, nullVal_);
+        unsigned NewSize = toIndex_(n) + 1;
+        if (NewSize > storage_.size())
+            storage_.resize(NewSize, nullVal_);
     }
 };
 
index 5fcdfae9dea71235f54e14e1b8ecc9fee3cda8ac..9d713d97c363f49176dfa65c60af1da5ea8b4f62 100644 (file)
@@ -9,7 +9,7 @@
 //
 // This file implements a dense map. A dense map template takes two
 // types. The first is the mapped type and the second is a functor
-// that maps its argument to a size_t. On instanciation a "null" value
+// that maps its argument to a size_t. On instantiation a "null" value
 // can be provided to be used as a "does not exist" indicator in the
 // map. A member function grow() is provided that given the value of
 // the maximally indexed key (the argument of the functor) makes sure
@@ -48,11 +48,13 @@ public:
     }
 
     void clear() {
-        storage_.assign(storage_.size(), nullVal_);
+        storage_.clear();
     }
 
     void grow(IndexT n) {
-        storage_.resize(toIndex_(n) + 1, nullVal_);
+        unsigned NewSize = toIndex_(n) + 1;
+        if (NewSize > storage_.size())
+            storage_.resize(NewSize, nullVal_);
     }
 };
 
index 5fcdfae9dea71235f54e14e1b8ecc9fee3cda8ac..9d713d97c363f49176dfa65c60af1da5ea8b4f62 100644 (file)
@@ -9,7 +9,7 @@
 //
 // This file implements a dense map. A dense map template takes two
 // types. The first is the mapped type and the second is a functor
-// that maps its argument to a size_t. On instanciation a "null" value
+// that maps its argument to a size_t. On instantiation a "null" value
 // can be provided to be used as a "does not exist" indicator in the
 // map. A member function grow() is provided that given the value of
 // the maximally indexed key (the argument of the functor) makes sure
@@ -48,11 +48,13 @@ public:
     }
 
     void clear() {
-        storage_.assign(storage_.size(), nullVal_);
+        storage_.clear();
     }
 
     void grow(IndexT n) {
-        storage_.resize(toIndex_(n) + 1, nullVal_);
+        unsigned NewSize = toIndex_(n) + 1;
+        if (NewSize > storage_.size())
+            storage_.resize(NewSize, nullVal_);
     }
 };