| Index: Source/platform/AsyncMethodRunner.h | 
| diff --git a/Source/platform/AsyncMethodRunner.h b/Source/platform/AsyncMethodRunner.h | 
| index 41201d131ad19c46a1f66d799023da7a1b3ab0ed..a496b53832b60fd04af01fcfe60e1a6269844891 100644 | 
| --- a/Source/platform/AsyncMethodRunner.h | 
| +++ b/Source/platform/AsyncMethodRunner.h | 
| @@ -120,11 +120,18 @@ public: | 
| } | 
|  | 
| private: | 
| -    void fired(Timer<AsyncMethodRunner<TargetClass>>*) { (m_object->*m_method)(); } | 
| +    void fired(Timer<AsyncMethodRunner<TargetClass>>*) | 
| +    { | 
| +        // TODO(Oilpan): when AsyncMethodRunner is on the heap, this check becomes | 
| +        // redundant; handled directly by Timer<> instead. | 
| +        if (!TimerIsObjectAliveTrait<TargetClass>::isHeapObjectAlive(m_object)) | 
| +            return; | 
| +        (m_object->*m_method)(); | 
| +    } | 
|  | 
| Timer<AsyncMethodRunner<TargetClass>> m_timer; | 
|  | 
| -    // FIXME: oilpan: AsyncMethodRunner should be moved to the heap and m_object should be traced. | 
| +    // TODO(Oilpan): AsyncMethodRunner should be moved to the heap and m_object should be traced. | 
| // This raw pointer is safe as long as AsyncMethodRunner<X> is held by the X itself | 
| // (That's the case in the current code base). | 
| GC_PLUGIN_IGNORE("363031") | 
|  |