| Index: Source/core/inspector/WorkerDebuggerAgent.cpp
|
| diff --git a/Source/core/inspector/WorkerDebuggerAgent.cpp b/Source/core/inspector/WorkerDebuggerAgent.cpp
|
| index 52d2b4d4f5c01e4badba956ba1125f152e94843d..adcacce4c06c65d6b851dc5e50c311d0f2d1e51c 100644
|
| --- a/Source/core/inspector/WorkerDebuggerAgent.cpp
|
| +++ b/Source/core/inspector/WorkerDebuggerAgent.cpp
|
| @@ -46,7 +46,11 @@ Mutex& workerDebuggerAgentsMutex()
|
| return mutex;
|
| }
|
|
|
| +#if ENABLE(OILPAN)
|
| +typedef HashMap<WorkerThread*, OwnPtr<CrossThreadPersistent<WorkerDebuggerAgent> > > WorkerDebuggerAgents;
|
| +#else
|
| typedef HashMap<WorkerThread*, WorkerDebuggerAgent*> WorkerDebuggerAgents;
|
| +#endif
|
|
|
| WorkerDebuggerAgents& workerDebuggerAgents()
|
| {
|
| @@ -54,7 +58,6 @@ WorkerDebuggerAgents& workerDebuggerAgents()
|
| return agents;
|
| }
|
|
|
| -
|
| class RunInspectorCommandsTask FINAL : public ScriptDebugServer::Task {
|
| public:
|
| explicit RunInspectorCommandsTask(WorkerThread* thread)
|
| @@ -73,35 +76,57 @@ 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)
|
| : InspectorDebuggerAgent(injectedScriptManager)
|
| , m_scriptDebugServer(scriptDebugServer)
|
| , m_inspectedWorkerGlobalScope(inspectedWorkerGlobalScope)
|
| + , m_thread(inspectedWorkerGlobalScope->thread())
|
| {
|
| MutexLocker lock(workerDebuggerAgentsMutex());
|
| - workerDebuggerAgents().set(inspectedWorkerGlobalScope->thread(), this);
|
| +#if ENABLE(OILPAN)
|
| + workerDebuggerAgents().set(m_thread, adoptPtr(new CrossThreadPersistent<WorkerDebuggerAgent>(this)));
|
| +#else
|
| + workerDebuggerAgents().set(m_thread, this);
|
| +#endif
|
| }
|
|
|
| WorkerDebuggerAgent::~WorkerDebuggerAgent()
|
| {
|
| - MutexLocker lock(workerDebuggerAgentsMutex());
|
| - ASSERT(workerDebuggerAgents().contains(m_inspectedWorkerGlobalScope->thread()));
|
| - workerDebuggerAgents().remove(m_inspectedWorkerGlobalScope->thread());
|
| +}
|
| +
|
| +void WorkerDebuggerAgent::trace(Visitor* visitor)
|
| +{
|
| + visitor->trace(m_inspectedWorkerGlobalScope);
|
| + InspectorDebuggerAgent::trace(visitor);
|
| }
|
|
|
| void WorkerDebuggerAgent::interruptAndDispatchInspectorCommands(WorkerThread* thread)
|
| {
|
| MutexLocker lock(workerDebuggerAgentsMutex());
|
| +#if ENABLE(OILPAN)
|
| + CrossThreadPersistent<WorkerDebuggerAgent>* agentHandle = workerDebuggerAgents().get(thread);
|
| + if (!agentHandle)
|
| + return;
|
| + WorkerDebuggerAgent* agent = agentHandle->get();
|
| +#else
|
| WorkerDebuggerAgent* agent = workerDebuggerAgents().get(thread);
|
| +#endif
|
| if (agent)
|
| agent->m_scriptDebugServer->interruptAndRunTask(adoptPtr(new RunInspectorCommandsTask(thread)));
|
| }
|
|
|
| +void WorkerDebuggerAgent::discard()
|
| +{
|
| + MutexLocker lock(workerDebuggerAgentsMutex());
|
| + ASSERT(workerDebuggerAgents().contains(m_thread));
|
| + workerDebuggerAgents().remove(m_thread);
|
| +}
|
| +
|
| void WorkerDebuggerAgent::startListeningScriptDebugServer()
|
| {
|
| scriptDebugServer().addListener(this);
|
|
|