From: Owen Anderson Date: Fri, 20 Jul 2007 18:56:46 +0000 (+0000) Subject: Make the heuristic for shrinking DenseMap smarter. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=398b40671b13018f88371b74822fa8ee2638577e;p=oota-llvm.git Make the heuristic for shrinking DenseMap smarter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40114 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/ADT/DenseMap.h b/include/llvm/ADT/DenseMap.h index 082fc35afa2..78caba52a51 100644 --- a/include/llvm/ADT/DenseMap.h +++ b/include/llvm/ADT/DenseMap.h @@ -15,6 +15,7 @@ #define LLVM_ADT_DENSEMAP_H #include "llvm/Support/DataTypes.h" +#include "llvm/Support/MathExtras.h" #include #include @@ -300,8 +301,9 @@ private: unsigned OldNumBuckets = NumBuckets; BucketT *OldBuckets = Buckets; - // Halve the number of buckets. - NumBuckets >>= 1; + // Reduce the number of buckets. + NumBuckets = NumEntries > 32 ? 1 << (Log2_32_Ceil(NumEntries) + 1) + : 64; NumTombstones = 0; Buckets = (BucketT*)new char[sizeof(BucketT)*NumBuckets];