Title: [207070] releases/WebKitGTK/webkit-2.14/Source/WTF
- Revision
- 207070
- Author
- carlo...@webkit.org
- Date
- 2016-10-11 02:18:15 -0700 (Tue, 11 Oct 2016)
Log Message
Merge r205836 - [WTF] HashTable's rehash is not compatible to Ref<T> and ASan
https://bugs.webkit.org/show_bug.cgi?id=161763
Reviewed by Darin Adler.
Destructors of HashTable's empty values need to be called while ones of deleted values don't.
* wtf/HashTable.h:
(WTF::KeyTraits>::deallocateTable):
* wtf/Ref.h:
Modified Paths
Diff
Modified: releases/WebKitGTK/webkit-2.14/Source/WTF/ChangeLog (207069 => 207070)
--- releases/WebKitGTK/webkit-2.14/Source/WTF/ChangeLog 2016-10-11 08:49:18 UTC (rev 207069)
+++ releases/WebKitGTK/webkit-2.14/Source/WTF/ChangeLog 2016-10-11 09:18:15 UTC (rev 207070)
@@ -1,3 +1,16 @@
+2016-09-12 Yusuke Suzuki <utatane....@gmail.com>
+
+ [WTF] HashTable's rehash is not compatible to Ref<T> and ASan
+ https://bugs.webkit.org/show_bug.cgi?id=161763
+
+ Reviewed by Darin Adler.
+
+ Destructors of HashTable's empty values need to be called while ones of deleted values don't.
+
+ * wtf/HashTable.h:
+ (WTF::KeyTraits>::deallocateTable):
+ * wtf/Ref.h:
+
2016-09-09 Mark Lam <mark....@apple.com>
Gardening: fixing a few JSC test failures.
Modified: releases/WebKitGTK/webkit-2.14/Source/WTF/wtf/HashTable.h (207069 => 207070)
--- releases/WebKitGTK/webkit-2.14/Source/WTF/wtf/HashTable.h 2016-10-11 08:49:18 UTC (rev 207069)
+++ releases/WebKitGTK/webkit-2.14/Source/WTF/wtf/HashTable.h 2016-10-11 09:18:15 UTC (rev 207070)
@@ -1153,7 +1153,7 @@
void HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits>::deallocateTable(ValueType* table, unsigned size)
{
for (unsigned i = 0; i < size; ++i) {
- if (!isEmptyOrDeletedBucket(table[i]))
+ if (!isDeletedBucket(table[i]))
table[i].~ValueType();
}
fastFree(table);
@@ -1197,11 +1197,17 @@
Value* newEntry = nullptr;
for (unsigned i = 0; i != oldTableSize; ++i) {
- if (isEmptyOrDeletedBucket(oldTable[i])) {
+ if (isDeletedBucket(oldTable[i])) {
ASSERT(std::addressof(oldTable[i]) != entry);
continue;
}
+ if (isEmptyBucket(oldTable[i])) {
+ ASSERT(std::addressof(oldTable[i]) != entry);
+ oldTable[i].~ValueType();
+ continue;
+ }
+
Value* reinsertedEntry = reinsert(WTFMove(oldTable[i]));
oldTable[i].~ValueType();
if (std::addressof(oldTable[i]) == entry) {
Modified: releases/WebKitGTK/webkit-2.14/Source/WTF/wtf/Ref.h (207069 => 207070)
--- releases/WebKitGTK/webkit-2.14/Source/WTF/wtf/Ref.h 2016-10-11 08:49:18 UTC (rev 207069)
+++ releases/WebKitGTK/webkit-2.14/Source/WTF/wtf/Ref.h 2016-10-11 09:18:15 UTC (rev 207070)
@@ -114,7 +114,7 @@
return *this;
}
- // Hash table deleted/empty values, which are only constructed and never copied or destroyed.
+ // Hash table deleted values, which are only constructed and never copied or destroyed.
Ref(HashTableDeletedValueType) : m_ptr(hashTableDeletedValue()) { }
bool isHashTableDeletedValue() const { return m_ptr == hashTableDeletedValue(); }
static T* hashTableDeletedValue() { return reinterpret_cast<T*>(-1); }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes