Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1040)

Unified Diff: Source/wtf/HashTable.h

Issue 152883002: (Concept patch) Simplify WTF::HashTable::add() return value for size and performance (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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>

Powered by Google App Engine
This is Rietveld 408576698