Chromium Code Reviews| Index: Source/platform/LifecycleNotifier.h |
| diff --git a/Source/platform/LifecycleNotifier.h b/Source/platform/LifecycleNotifier.h |
| index f465555b68199f20cde0ffa1a8b5039b385257bf..44dcf07aa07a67ccd65a54ba279a6a7c0e0ffd09 100644 |
| --- a/Source/platform/LifecycleNotifier.h |
| +++ b/Source/platform/LifecycleNotifier.h |
| @@ -48,7 +48,12 @@ public: |
| // is still valid and safe to use during the notification. |
| virtual void notifyContextDestroyed(); |
| - DEFINE_INLINE_VIRTUAL_TRACE() { } |
| + DEFINE_INLINE_VIRTUAL_TRACE() |
| + { |
| +#if ENABLE(OILPAN) |
| + visitor->trace(m_observers); |
| +#endif |
| + } |
| bool isIteratingOverObservers() const { return m_iterating != IteratingNone; } |
| @@ -68,8 +73,12 @@ protected: |
| IterationType m_iterating; |
| protected: |
| - using ObserverSet = HashSet<Observer*>; |
| + using ObserverSet = WillBeHeapHashSet<RawPtrWillBeWeakMember<Observer>>; |
| + // FIXME: Oilpan: make LifecycleNotifier<> a GC mixin, somehow. ExecutionContext |
| + // is the problematic case, as it would then be a class with two GC mixin |
| + // bases, but cannot itself derive from a GC base class also. |
|
haraken
2015/03/16 23:44:22
Regarding the diamond inheritance problem, can we
sof
2015/03/17 06:24:06
A big CL; what are you referring to?
haraken
2015/03/17 08:29:36
The public virtual inheritance in Supplementable.h
sof
2015/03/17 08:51:46
Thanks; virtual inheritance brings overhead and co
|
| + GC_PLUGIN_IGNORE("467502") |
| ObserverSet m_observers; |
| #if ENABLE(ASSERT) |