| Index: Source/platform/heap/Heap.h
|
| diff --git a/Source/platform/heap/Heap.h b/Source/platform/heap/Heap.h
|
| index 4ca6be0d7cd9684881a627f047b520b0488278e5..ce62e641c5d3cb0de41b2ebd2b034db60fd0ec80 100644
|
| --- a/Source/platform/heap/Heap.h
|
| +++ b/Source/platform/heap/Heap.h
|
| @@ -671,7 +671,7 @@ class ThreadSafeRefCountedGarbageCollected : public GarbageCollectedFinalized<T>
|
| public:
|
| ThreadSafeRefCountedGarbageCollected()
|
| {
|
| - m_keepAlive = adoptPtr(new CrossThreadPersistent<T>(static_cast<T*>(this)));
|
| + makeKeepAlive();
|
| }
|
|
|
| // Override ref to deal with a case where a reference count goes up
|
| @@ -683,8 +683,7 @@ public:
|
| {
|
| MutexLocker lock(m_mutex);
|
| if (UNLIKELY(!refCount())) {
|
| - ASSERT(!m_keepAlive);
|
| - m_keepAlive = adoptPtr(new CrossThreadPersistent<T>(static_cast<T*>(this)));
|
| + makeKeepAlive();
|
| }
|
| WTF::ThreadSafeRefCountedBase::ref();
|
| }
|
| @@ -706,6 +705,12 @@ protected:
|
| ~ThreadSafeRefCountedGarbageCollected() { }
|
|
|
| private:
|
| + void makeKeepAlive()
|
| + {
|
| + ASSERT(!m_keepAlive);
|
| + m_keepAlive = adoptPtr(new CrossThreadPersistent<T>(static_cast<T*>(this)));
|
| + }
|
| +
|
| OwnPtr<CrossThreadPersistent<T> > m_keepAlive;
|
| mutable Mutex m_mutex;
|
| };
|
|
|