| Index: Source/platform/Supplementable.h
|
| diff --git a/Source/platform/Supplementable.h b/Source/platform/Supplementable.h
|
| index b35b0123550932ce185295a82d1fde00db242b95..aa7322710921d265d17a67276f4b8d928403b1dd 100644
|
| --- a/Source/platform/Supplementable.h
|
| +++ b/Source/platform/Supplementable.h
|
| @@ -145,6 +145,9 @@ public:
|
|
|
| virtual void trace(Visitor*) { }
|
| virtual void willBeDestroyed() { }
|
| +
|
| + // FIXME: Oilpan: Remove this callback once PersistentHeapSupplementable is removed again.
|
| + virtual void persistentHostHasBeenDestroyed() { }
|
| };
|
|
|
| template<typename T, bool>
|
| @@ -194,8 +197,8 @@ public:
|
| it->value->willBeDestroyed();
|
| }
|
|
|
| -private:
|
| - // FIXME: Oilpan: Remove this ignore once PersistentHeapSupplementable is removed again.
|
| + // FIXME: Oilpan: Make private and remove this ignore once PersistentHeapSupplementable is removed again.
|
| +protected:
|
| GC_PLUGIN_IGNORE("")
|
| typename SupplementableTraits<T, isGarbageCollected>::SupplementMap m_supplements;
|
|
|
| @@ -219,6 +222,12 @@ template<typename T>
|
| class PersistentHeapSupplementable : public SupplementableBase<T, true> {
|
| public:
|
| PersistentHeapSupplementable() : m_root(this) { }
|
| + virtual ~PersistentHeapSupplementable()
|
| + {
|
| + typedef typename SupplementableTraits<T, true>::SupplementMap::iterator SupplementIterator;
|
| + for (SupplementIterator it = this->m_supplements.begin(); it != this->m_supplements.end(); ++it)
|
| + it->value->persistentHostHasBeenDestroyed();
|
| + }
|
| private:
|
| class TraceDelegate : PersistentBase<ThreadLocalPersistents<AnyThread>, TraceDelegate> {
|
| public:
|
|
|