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> |