Index: Source/wtf/HashTable.h |
diff --git a/Source/wtf/HashTable.h b/Source/wtf/HashTable.h |
index 9b3bb19daa9446246e9ba12f8e6cf4e824a3c5c0..047b5a3204b1750189b8a7235b4466dc26c1ce64 100644 |
--- a/Source/wtf/HashTable.h |
+++ b/Source/wtf/HashTable.h |
@@ -97,7 +97,7 @@ namespace WTF { |
class HashTableConstIterator; |
template<typename Value, typename HashFunctions, typename HashTraits, typename Allocator> |
class LinkedHashSet; |
- template<bool x, typename T, typename U, typename V, typename W, typename X, typename Y, typename Z> |
+ template<WeakHandlingFlag x, typename T, typename U, typename V, typename W, typename X, typename Y, typename Z> |
struct WeakProcessingHashTableHelper; |
typedef enum { HashItemKnownGood } HashItemKnownGoodTag; |
@@ -532,7 +532,7 @@ namespace WTF { |
mutable OwnPtr<Stats> m_stats; |
#endif |
- template<bool x, typename T, typename U, typename V, typename W, typename X, typename Y, typename Z> friend struct WeakProcessingHashTableHelper; |
+ template<WeakHandlingFlag x, typename T, typename U, typename V, typename W, typename X, typename Y, typename Z> friend struct WeakProcessingHashTableHelper; |
template<typename T, typename U, typename V, typename W> friend class LinkedHashSet; |
}; |
@@ -1097,16 +1097,16 @@ namespace WTF { |
return *this; |
} |
- template<bool isWeak, typename Key, typename Value, typename Extractor, typename HashFunctions, typename Traits, typename KeyTraits, typename Allocator> |
+ template<WeakHandlingFlag weakHandlingFlag, typename Key, typename Value, typename Extractor, typename HashFunctions, typename Traits, typename KeyTraits, typename Allocator> |
struct WeakProcessingHashTableHelper; |
template<typename Key, typename Value, typename Extractor, typename HashFunctions, typename Traits, typename KeyTraits, typename Allocator> |
- struct WeakProcessingHashTableHelper<false, Key, Value, Extractor, HashFunctions, Traits, KeyTraits, Allocator> { |
+ struct WeakProcessingHashTableHelper<NoWeakHandlingInCollections, Key, Value, Extractor, HashFunctions, Traits, KeyTraits, Allocator> { |
static void process(typename Allocator::Visitor* visitor, void* closure) { } |
}; |
template<typename Key, typename Value, typename Extractor, typename HashFunctions, typename Traits, typename KeyTraits, typename Allocator> |
- struct WeakProcessingHashTableHelper<true, Key, Value, Extractor, HashFunctions, Traits, KeyTraits, Allocator> { |
+ struct WeakProcessingHashTableHelper<WeakHandlingInCollections, Key, Value, Extractor, HashFunctions, Traits, KeyTraits, Allocator> { |
static void process(typename Allocator::Visitor* visitor, void* closure) |
{ |
typedef HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits, Allocator> HashTableType; |
@@ -1120,7 +1120,7 @@ namespace WTF { |
// strongly). |
for (typename HashTableType::ValueType* element = table->m_table + table->m_tableSize - 1; element >= table->m_table; element--) { |
if (!HashTableType::isEmptyOrDeletedBucket(*element)) { |
- if (Allocator::hasDeadMember(visitor, *element)) { |
+ if (Traits::shouldRemoveFromCollection(visitor, *element)) { |
table->registerModification(); |
HashTableType::deleteBucket(*element); // Also calls the destructor. |
table->m_deletedCount++; |
@@ -1156,10 +1156,10 @@ namespace WTF { |
// while we are iterating over them. The weakProcessing callback will |
// mark the backing as a void pointer, and will perform weak processing |
// if needed. |
- if (!Traits::isWeak) |
+ if (Traits::weakHandlingFlag == NoWeakHandlingInCollections) |
Allocator::markNoTracing(visitor, m_table); |
else |
- Allocator::registerWeakMembers(visitor, this, m_table, WeakProcessingHashTableHelper<Traits::isWeak, Key, Value, Extractor, HashFunctions, Traits, KeyTraits, Allocator>::process); |
+ Allocator::registerWeakMembers(visitor, this, m_table, WeakProcessingHashTableHelper<Traits::weakHandlingFlag, Key, Value, Extractor, HashFunctions, Traits, KeyTraits, Allocator>::process); |
if (ShouldBeTraced<Traits>::value) { |
for (ValueType* element = m_table + m_tableSize - 1; element >= m_table; element--) { |
if (!isEmptyOrDeletedBucket(*element)) |