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; |
}; |