| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2005, 2006, 2007, 2008, 2011, 2012 Apple Inc. All rights reserv
ed. | 2 * Copyright (C) 2005, 2006, 2007, 2008, 2011, 2012 Apple Inc. All rights reserv
ed. |
| 3 * Copyright (C) 2008 David Levin <levin@chromium.org> | 3 * Copyright (C) 2008 David Levin <levin@chromium.org> |
| 4 * | 4 * |
| 5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
| 6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
| 7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
| 8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
| 9 * | 9 * |
| 10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
| (...skipping 753 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 764 template<typename Key, typename Value, typename Extractor, typename HashFunc
tions, typename Traits, typename KeyTraits, typename Allocator> | 764 template<typename Key, typename Value, typename Extractor, typename HashFunc
tions, typename Traits, typename KeyTraits, typename Allocator> |
| 765 inline void HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTrait
s, Allocator>::initializeBucket(ValueType& bucket) | 765 inline void HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTrait
s, Allocator>::initializeBucket(ValueType& bucket) |
| 766 { | 766 { |
| 767 HashTableBucketInitializer<Traits::emptyValueIsZero>::template initializ
e<Traits>(bucket); | 767 HashTableBucketInitializer<Traits::emptyValueIsZero>::template initializ
e<Traits>(bucket); |
| 768 } | 768 } |
| 769 | 769 |
| 770 template<typename Key, typename Value, typename Extractor, typename HashFunc
tions, typename Traits, typename KeyTraits, typename Allocator> | 770 template<typename Key, typename Value, typename Extractor, typename HashFunc
tions, typename Traits, typename KeyTraits, typename Allocator> |
| 771 template<typename HashTranslator, typename T, typename Extra> | 771 template<typename HashTranslator, typename T, typename Extra> |
| 772 typename HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits,
Allocator>::AddResult HashTable<Key, Value, Extractor, HashFunctions, Traits, Ke
yTraits, Allocator>::add(const T& key, const Extra& extra) | 772 typename HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits,
Allocator>::AddResult HashTable<Key, Value, Extractor, HashFunctions, Traits, Ke
yTraits, Allocator>::add(const T& key, const Extra& extra) |
| 773 { | 773 { |
| 774 ASSERT(Allocator::isAllocationAllowed()); |
| 774 if (!m_table) | 775 if (!m_table) |
| 775 expand(); | 776 expand(); |
| 776 | 777 |
| 777 ASSERT(m_table); | 778 ASSERT(m_table); |
| 778 | 779 |
| 779 ValueType* table = m_table; | 780 ValueType* table = m_table; |
| 780 size_t k = 0; | 781 size_t k = 0; |
| 781 size_t sizeMask = tableSizeMask(); | 782 size_t sizeMask = tableSizeMask(); |
| 782 unsigned h = HashTranslator::hash(key); | 783 unsigned h = HashTranslator::hash(key); |
| 783 size_t i = h & sizeMask; | 784 size_t i = h & sizeMask; |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 826 if (shouldExpand()) | 827 if (shouldExpand()) |
| 827 entry = expand(entry); | 828 entry = expand(entry); |
| 828 | 829 |
| 829 return AddResult(this, entry, true); | 830 return AddResult(this, entry, true); |
| 830 } | 831 } |
| 831 | 832 |
| 832 template<typename Key, typename Value, typename Extractor, typename HashFunc
tions, typename Traits, typename KeyTraits, typename Allocator> | 833 template<typename Key, typename Value, typename Extractor, typename HashFunc
tions, typename Traits, typename KeyTraits, typename Allocator> |
| 833 template<typename HashTranslator, typename T, typename Extra> | 834 template<typename HashTranslator, typename T, typename Extra> |
| 834 typename HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits,
Allocator>::AddResult HashTable<Key, Value, Extractor, HashFunctions, Traits, Ke
yTraits, Allocator>::addPassingHashCode(const T& key, const Extra& extra) | 835 typename HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits,
Allocator>::AddResult HashTable<Key, Value, Extractor, HashFunctions, Traits, Ke
yTraits, Allocator>::addPassingHashCode(const T& key, const Extra& extra) |
| 835 { | 836 { |
| 837 ASSERT(Allocator::isAllocationAllowed()); |
| 836 if (!m_table) | 838 if (!m_table) |
| 837 expand(); | 839 expand(); |
| 838 | 840 |
| 839 FullLookupType lookupResult = fullLookupForWriting<HashTranslator>(key); | 841 FullLookupType lookupResult = fullLookupForWriting<HashTranslator>(key); |
| 840 | 842 |
| 841 ValueType* entry = lookupResult.first.first; | 843 ValueType* entry = lookupResult.first.first; |
| 842 bool found = lookupResult.first.second; | 844 bool found = lookupResult.first.second; |
| 843 unsigned h = lookupResult.second; | 845 unsigned h = lookupResult.second; |
| 844 | 846 |
| 845 if (found) | 847 if (found) |
| (...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1341 CollectionIterator end(toBeRemoved.end()); | 1343 CollectionIterator end(toBeRemoved.end()); |
| 1342 for (CollectionIterator it(toBeRemoved.begin()); it != end; ++it) | 1344 for (CollectionIterator it(toBeRemoved.begin()); it != end; ++it) |
| 1343 collection.remove(*it); | 1345 collection.remove(*it); |
| 1344 } | 1346 } |
| 1345 | 1347 |
| 1346 } // namespace WTF | 1348 } // namespace WTF |
| 1347 | 1349 |
| 1348 #include "wtf/HashIterators.h" | 1350 #include "wtf/HashIterators.h" |
| 1349 | 1351 |
| 1350 #endif // WTF_HashTable_h | 1352 #endif // WTF_HashTable_h |
| OLD | NEW |