Chromium Code Reviews| Index: Source/wtf/HashTable.h |
| diff --git a/Source/wtf/HashTable.h b/Source/wtf/HashTable.h |
| index e5f01acd4227d5939f1ec53e7e8c245a71bdcc06..0d55681e684b3aaa50e48be368e64d2bf5f5ba06 100644 |
| --- a/Source/wtf/HashTable.h |
| +++ b/Source/wtf/HashTable.h |
| @@ -206,9 +206,9 @@ namespace WTF { |
| template<typename T, typename U> static void translate(T& location, const U&, const T& value) { location = value; } |
| }; |
| - template<typename IteratorType> struct HashTableAddResult { |
| - HashTableAddResult(IteratorType iter, bool isNewEntry) : iterator(iter), isNewEntry(isNewEntry) { } |
| - IteratorType iterator; |
| + template<typename ValueType> struct HashTableAddResult { |
| + HashTableAddResult(ValueType* iterator, bool isNewEntry) : iterator(iterator), isNewEntry(isNewEntry) { } |
|
Erik Corry
2014/02/04 14:27:15
If this is no longer an iterator, should it be cal
eseidel
2014/02/05 22:17:20
No. :) But presumably Daniel did this to minimize
|
| + ValueType* iterator; |
| bool isNewEntry; |
| }; |
| @@ -231,7 +231,7 @@ namespace WTF { |
| typedef Value ValueType; |
| typedef typename Traits::PeekInType ValuePeekInType; |
| typedef IdentityHashTranslator<HashFunctions> IdentityTranslatorType; |
| - typedef HashTableAddResult<iterator> AddResult; |
| + typedef HashTableAddResult<ValueType> AddResult; |
| #if DUMP_HASHTABLE_STATS_PER_TABLE |
| struct Stats { |
| @@ -688,7 +688,7 @@ namespace WTF { |
| break; |
| if (HashTranslator::equal(Extractor::extract(*entry), key)) |
| - return AddResult(makeKnownGoodIterator(entry), false); |
| + return AddResult(entry, false); |
| if (isDeletedBucket(*entry)) |
| deletedEntry = entry; |
| @@ -699,7 +699,7 @@ namespace WTF { |
| if (isDeletedBucket(*entry)) |
| deletedEntry = entry; |
| else if (HashTranslator::equal(Extractor::extract(*entry), key)) |
| - return AddResult(makeKnownGoodIterator(entry), false); |
| + return AddResult(entry, false); |
| } |
| #if DUMP_HASHTABLE_STATS |
| ++probeCount; |
| @@ -732,12 +732,14 @@ namespace WTF { |
| // follow a pivot entry and return the new position. |
| typename WTF::RemoveReference<KeyPassInType>::Type enteredKey = Extractor::extract(*entry); |
| expand(); |
| - AddResult result(find(enteredKey), true); |
| - ASSERT(result.iterator != end()); |
| + iterator findResult = find(enteredKey); |
| + ASSERT(findResult != end()); |
| + ValueType* resultValue = findResult.get(); |
| + AddResult result(resultValue, true); |
| return result; |
| } |
| - return AddResult(makeKnownGoodIterator(entry), true); |
| + return AddResult(entry, true); |
| } |
| template<typename Key, typename Value, typename Extractor, typename HashFunctions, typename Traits, typename KeyTraits, typename Allocator> |
| @@ -754,7 +756,7 @@ namespace WTF { |
| unsigned h = lookupResult.second; |
| if (found) |
| - return AddResult(makeKnownGoodIterator(entry), false); |
| + return AddResult(entry, false); |
| if (isDeletedBucket(*entry)) { |
| initializeBucket(*entry); |
| @@ -769,12 +771,14 @@ namespace WTF { |
| // follow a pivot entry and return the new position. |
| typename WTF::RemoveReference<KeyPassInType>::Type enteredKey = Extractor::extract(*entry); |
| expand(); |
| - AddResult result(find(enteredKey), true); |
| - ASSERT(result.iterator != end()); |
| + iterator findResult = find(enteredKey); |
| + ASSERT(findResult != end()); |
| + ValueType* resultValue = findResult.get(); |
| + AddResult result(resultValue, true); |
| return result; |
| } |
| - return AddResult(makeKnownGoodIterator(entry), true); |
| + return AddResult(entry, true); |
| } |
| template<typename Key, typename Value, typename Extractor, typename HashFunctions, typename Traits, typename KeyTraits, typename Allocator> |