Index: Source/core/workers/WorkerThread.cpp |
diff --git a/Source/core/workers/WorkerThread.cpp b/Source/core/workers/WorkerThread.cpp |
index c60511544ab3c579e55ce404dcde5ef77705a1b8..e711501aca3a51f6245ac520296fdf3dfdd0b2f1 100644 |
--- a/Source/core/workers/WorkerThread.cpp |
+++ b/Source/core/workers/WorkerThread.cpp |
@@ -135,18 +135,20 @@ void WorkerThread::workerThread() |
ThreadIdentifier threadID = m_threadID; |
+#if !ENABLE(OILPAN) |
+ ASSERT(m_workerGlobalScope->hasOneRef()); |
+#endif |
// The below assignment will destroy the context, which will in turn notify messaging proxy. |
// We cannot let any objects survive past thread exit, because no other thread will run GC or otherwise destroy them. |
// If Oilpan is enabled, we detach of the context/global scope, with the final heap cleanup below sweeping it out. |
-#if ENABLE(OILPAN) |
m_workerGlobalScope->dispose(); |
-#else |
- ASSERT(m_workerGlobalScope->hasOneRef()); |
-#endif |
m_workerGlobalScope = nullptr; |
ThreadState::detach(); |
haraken
2014/03/17 01:22:56
Shall we move ThreadState::detach() at the very en
haraken
2014/03/17 01:25:45
As far as I read your comment in https://coderevie
sof
2014/03/17 07:46:41
Added a comment, which might address this? (not su
|
+ // Notify proxy that WorkerGlobalScope is now gone. This can free the WorkerThread object, so do not access it after this. |
+ workerReportingProxy().workerGlobalScopeDestroyed(); |
+ |
// Clean up PlatformThreadData before WTF::WTFThreadData goes away! |
PlatformThreadData::current().destroy(); |