Index: third_party/WebKit/Source/wtf/HashTable.h |
diff --git a/third_party/WebKit/Source/wtf/HashTable.h b/third_party/WebKit/Source/wtf/HashTable.h |
index c3735e9de3dea61026237f229babb370be8a90c0..9bceee0450cc562d8355f4bc68479f51cb3074a9 100644 |
--- a/third_party/WebKit/Source/wtf/HashTable.h |
+++ b/third_party/WebKit/Source/wtf/HashTable.h |
@@ -2092,6 +2092,7 @@ void HashTable<Key, |
// place after we know if the backing is reachable from elsewhere. We also |
// register a weakProcessing callback which will perform weak processing if |
// needed. |
+ |
if (Traits::weakHandlingFlag == NoWeakHandlingInCollections) { |
Allocator::markNoTracing(visitor, m_table); |
} else { |
@@ -2105,6 +2106,10 @@ void HashTable<Key, |
Extractor, HashFunctions, Traits, |
KeyTraits, Allocator>::process); |
} |
+ // If the backing store will be moved by sweep compaction, register the |
+ // table reference pointing to the backing store object, so that the |
+ // reference is updated upon object relocation. |
+ Allocator::registerBackingStoreReference(visitor, &m_table); |
if (!IsTraceableInCollectionTrait<Traits>::value) |
return; |
if (Traits::weakHandlingFlag == WeakHandlingInCollections) { |