Index: Source/core/workers/WorkerGlobalScope.cpp |
diff --git a/Source/core/workers/WorkerGlobalScope.cpp b/Source/core/workers/WorkerGlobalScope.cpp |
index 24d4eb5c4c1fbb2a509d670e550079e4730d73d9..e6312b9faadc0865b551150f2b75df2dc14bea45 100644 |
--- a/Source/core/workers/WorkerGlobalScope.cpp |
+++ b/Source/core/workers/WorkerGlobalScope.cpp |
@@ -72,7 +72,7 @@ WorkerGlobalScope::WorkerGlobalScope(const KURL& url, const String& userAgent, W |
: m_url(url) |
, m_userAgent(userAgent) |
, m_v8CacheOptions(V8CacheOptionsDefault) |
- , m_script(adoptPtr(new WorkerScriptController(*this, thread->isolate()))) |
+ , m_script(WorkerScriptController::create(this, thread->isolate())) |
, m_thread(thread) |
, m_workerInspectorController(adoptRefWillBeNoop(new WorkerInspectorController(this))) |
, m_closing(false) |
@@ -186,6 +186,13 @@ void WorkerGlobalScope::postTask(const WebTraceLocation& location, PassOwnPtr<Ex |
thread()->postTask(location, task); |
} |
+void WorkerGlobalScope::clearScript() |
+{ |
+ ASSERT(m_script); |
+ m_script->dispose(); |
+ m_script.clear(); |
+} |
+ |
void WorkerGlobalScope::clearInspector() |
{ |
ASSERT(m_workerInspectorController); |
@@ -390,6 +397,7 @@ DEFINE_TRACE(WorkerGlobalScope) |
visitor->trace(m_console); |
visitor->trace(m_location); |
visitor->trace(m_navigator); |
+ visitor->trace(m_script); |
visitor->trace(m_workerInspectorController); |
visitor->trace(m_eventQueue); |
visitor->trace(m_workerClients); |