Index: Source/modules/webdatabase/DatabaseSync.h |
diff --git a/Source/modules/webdatabase/DatabaseSync.h b/Source/modules/webdatabase/DatabaseSync.h |
index f1317c36cb352ab0dbb02cb1f44a7fc390472f99..d3cea75ca7088fbf06f08c9572f4e85faaf2a9b8 100644 |
--- a/Source/modules/webdatabase/DatabaseSync.h |
+++ b/Source/modules/webdatabase/DatabaseSync.h |
@@ -88,6 +88,11 @@ private: |
SQLTransactionSync& m_transaction; |
}; |
+ // Need a Persistent field because a HeapHashMap entry should be removed |
+ // just after a SQLTransactionSync becomes untraceable. If this field was a |
+ // Member<>, we could not assume the destruction order of DatabaseSync, |
+ // SQLTransactionSync, and the field. We can not make the field static |
+ // because multiple worker threads create SQLTransactionSync. |
GC_PLUGIN_IGNORE("http://crbug.com/353083") |
PersistentHeapHashMap<WeakMember<SQLTransactionSync>, OwnPtr<TransactionObserver> > m_observers; |
#endif |