Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2007, Google Inc. | 1 // Copyright (c) 2007, Google Inc. |
| 2 // All rights reserved. | 2 // All rights reserved. |
| 3 // | 3 // |
| 4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
| 5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are |
| 6 // met: | 6 // met: |
| 7 // | 7 // |
| 8 // * Redistributions of source code must retain the above copyright | 8 // * Redistributions of source code must retain the above copyright |
| 9 // notice, this list of conditions and the following disclaimer. | 9 // notice, this list of conditions and the following disclaimer. |
| 10 // * Redistributions in binary form must reproduce the above | 10 // * Redistributions in binary form must reproduce the above |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 132 // the cache is T. See also the big comment at the top of the file. | 132 // the cache is T. See also the big comment at the top of the file. |
| 133 template <int kKeybits, typename T> | 133 template <int kKeybits, typename T> |
| 134 class PackedCache { | 134 class PackedCache { |
| 135 public: | 135 public: |
| 136 typedef uintptr_t K; | 136 typedef uintptr_t K; |
| 137 typedef size_t V; | 137 typedef size_t V; |
| 138 #ifdef TCMALLOC_SMALL_BUT_SLOW | 138 #ifdef TCMALLOC_SMALL_BUT_SLOW |
| 139 // Decrease the size map cache if running in the small memory mode. | 139 // Decrease the size map cache if running in the small memory mode. |
| 140 static const int kHashbits = 12; | 140 static const int kHashbits = 12; |
| 141 #else | 141 #else |
| 142 static const int kHashbits = 16; | 142 // We don't want the hash map to occupy 512K memory at Chromium, so |
| 143 // kHashbits is decreased from 16 to 12. | |
|
jar (doing other things)
2011/06/20 16:45:02
Question: Rather than forking this file, why don't
| |
| 144 static const int kHashbits = 12; | |
| 143 #endif | 145 #endif |
| 144 static const int kValuebits = 7; | 146 static const int kValuebits = 7; |
| 145 static const bool kUseWholeKeys = kKeybits + kValuebits <= 8 * sizeof(T); | 147 static const bool kUseWholeKeys = kKeybits + kValuebits <= 8 * sizeof(T); |
| 146 | 148 |
| 147 explicit PackedCache(V initial_value) { | 149 explicit PackedCache(V initial_value) { |
| 148 COMPILE_ASSERT(kKeybits <= sizeof(K) * 8, key_size); | 150 COMPILE_ASSERT(kKeybits <= sizeof(K) * 8, key_size); |
| 149 COMPILE_ASSERT(kValuebits <= sizeof(V) * 8, value_size); | 151 COMPILE_ASSERT(kValuebits <= sizeof(V) * 8, value_size); |
| 150 COMPILE_ASSERT(kHashbits <= kKeybits, hash_function); | 152 COMPILE_ASSERT(kHashbits <= kKeybits, hash_function); |
| 151 COMPILE_ASSERT(kKeybits - kHashbits + kValuebits <= kTbits, | 153 COMPILE_ASSERT(kKeybits - kHashbits + kValuebits <= kTbits, |
| 152 entry_size_must_be_big_enough); | 154 entry_size_must_be_big_enough); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 229 static const V kValueMask = N_ONES_(V, kValuebits); | 231 static const V kValueMask = N_ONES_(V, kValuebits); |
| 230 | 232 |
| 231 // array_ is the cache. Its elements are volatile because any | 233 // array_ is the cache. Its elements are volatile because any |
| 232 // thread can write any array element at any time. | 234 // thread can write any array element at any time. |
| 233 volatile T array_[1 << kHashbits]; | 235 volatile T array_[1 << kHashbits]; |
| 234 }; | 236 }; |
| 235 | 237 |
| 236 #undef N_ONES_ | 238 #undef N_ONES_ |
| 237 | 239 |
| 238 #endif // TCMALLOC_PACKED_CACHE_INL_H_ | 240 #endif // TCMALLOC_PACKED_CACHE_INL_H_ |
| OLD | NEW |