Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1103)

Unified Diff: Source/core/inspector/WorkerDebuggerAgent.cpp

Issue 307943002: Oilpan: Prepare moving InspectorController and InspectorAgents to oilpan. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/inspector/WorkerDebuggerAgent.h ('k') | Source/core/inspector/WorkerInspectorController.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/inspector/WorkerDebuggerAgent.cpp
diff --git a/Source/core/inspector/WorkerDebuggerAgent.cpp b/Source/core/inspector/WorkerDebuggerAgent.cpp
index 52d2b4d4f5c01e4badba956ba1125f152e94843d..2a4da722a09555c8320b55406c0366adb154c510 100644
--- a/Source/core/inspector/WorkerDebuggerAgent.cpp
+++ b/Source/core/inspector/WorkerDebuggerAgent.cpp
@@ -54,6 +54,31 @@ WorkerDebuggerAgents& workerDebuggerAgents()
return agents;
}
+#if ENABLE(OILPAN)
+class WorkerDebuggerAgentRemover {
+public:
+ WorkerDebuggerAgentRemover(WorkerThread* thread)
+ {
+ m_thread = thread;
+ }
+ ~WorkerDebuggerAgentRemover()
+ {
+ MutexLocker lock(workerDebuggerAgentsMutex());
+ workerDebuggerAgents().remove(m_thread);
haraken 2014/05/30 03:24:12 If you insert printf to ~WorkerDebuggerAgentRemove
+ }
+
+private:
+ WorkerThread* m_thread;
+};
+
+typedef WillBePersistentHeapHashMap<WeakMember<WorkerDebuggerAgent>, OwnPtr<WorkerDebuggerAgentRemover> > WorkerDebuggerAgentRemovers;
haraken 2014/06/02 04:51:14 mads@, erik@: I'm guessing that this issue might b
Mads Ager (chromium) 2014/06/02 09:00:59 That does not work, no. If you need to do somethin
+
+WorkerDebuggerAgentRemovers& workerDebuggerAgentRemovers()
+{
+ DEFINE_STATIC_LOCAL(WorkerDebuggerAgentRemovers, removers, ());
haraken 2014/05/30 03:24:12 I don't think it's related, but what happens if yo
+ return removers;
+}
+#endif
class RunInspectorCommandsTask FINAL : public ScriptDebugServer::Task {
public:
@@ -73,9 +98,9 @@ private:
} // namespace
-PassOwnPtr<WorkerDebuggerAgent> WorkerDebuggerAgent::create(WorkerScriptDebugServer* scriptDebugServer, WorkerGlobalScope* inspectedWorkerGlobalScope, InjectedScriptManager* injectedScriptManager)
+PassOwnPtrWillBeRawPtr<WorkerDebuggerAgent> WorkerDebuggerAgent::create(WorkerScriptDebugServer* scriptDebugServer, WorkerGlobalScope* inspectedWorkerGlobalScope, InjectedScriptManager* injectedScriptManager)
{
- return adoptPtr(new WorkerDebuggerAgent(scriptDebugServer, inspectedWorkerGlobalScope, injectedScriptManager));
+ return adoptPtrWillBeNoop(new WorkerDebuggerAgent(scriptDebugServer, inspectedWorkerGlobalScope, injectedScriptManager));
}
WorkerDebuggerAgent::WorkerDebuggerAgent(WorkerScriptDebugServer* scriptDebugServer, WorkerGlobalScope* inspectedWorkerGlobalScope, InjectedScriptManager* injectedScriptManager)
@@ -84,14 +109,26 @@ WorkerDebuggerAgent::WorkerDebuggerAgent(WorkerScriptDebugServer* scriptDebugSer
, m_inspectedWorkerGlobalScope(inspectedWorkerGlobalScope)
{
MutexLocker lock(workerDebuggerAgentsMutex());
- workerDebuggerAgents().set(inspectedWorkerGlobalScope->thread(), this);
+ WorkerThread* thread = inspectedWorkerGlobalScope->thread();
+ ASSERT(!workerDebuggerAgents().contains(thread));
+ ASSERT(!workerDebuggerAgentRemovers().contains(this));
+ workerDebuggerAgents().set(thread, this);
+ workerDebuggerAgentRemovers().set(this, adoptPtr(new WorkerDebuggerAgentRemover(thread)));
haraken 2014/05/30 01:13:20 The line 113 and 115 need to be removed in oilpan
keishi 2014/05/30 02:01:07 Won't line 79 in ~WorkerDebuggerAgentRemover work
haraken 2014/05/30 03:24:12 oh, line 67 should work.
}
WorkerDebuggerAgent::~WorkerDebuggerAgent()
{
+#if !ENABLE(OILPAN)
MutexLocker lock(workerDebuggerAgentsMutex());
ASSERT(workerDebuggerAgents().contains(m_inspectedWorkerGlobalScope->thread()));
workerDebuggerAgents().remove(m_inspectedWorkerGlobalScope->thread());
+#endif
+}
+
+void WorkerDebuggerAgent::trace(Visitor* visitor)
+{
+ visitor->trace(m_inspectedWorkerGlobalScope);
+ InspectorDebuggerAgent::trace(visitor);
}
void WorkerDebuggerAgent::interruptAndDispatchInspectorCommands(WorkerThread* thread)
« no previous file with comments | « Source/core/inspector/WorkerDebuggerAgent.h ('k') | Source/core/inspector/WorkerInspectorController.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698