Index: Source/bindings/core/v8/WorkerScriptController.h |
diff --git a/Source/bindings/core/v8/WorkerScriptController.h b/Source/bindings/core/v8/WorkerScriptController.h |
index f25230d75d880cfcd37a4e36455748fc780439ba..eaa801f7459ad52a11843d225f6ce6b07afadaca 100644 |
--- a/Source/bindings/core/v8/WorkerScriptController.h |
+++ b/Source/bindings/core/v8/WorkerScriptController.h |
@@ -41,25 +41,11 @@ |
namespace WebCore { |
class ErrorEvent; |
+class ExceptionState; |
class ScriptSourceCode; |
class ScriptValue; |
class WorkerGlobalScope; |
- |
-struct WorkerGlobalScopeExecutionState { |
- WorkerGlobalScopeExecutionState() |
- : hadException(false) |
- , lineNumber(0) |
- , columnNumber(0) |
- { |
- } |
- |
- bool hadException; |
- String errorMessage; |
- int lineNumber; |
- int columnNumber; |
- String sourceURL; |
- ScriptValue exception; |
-}; |
+class WorkerGlobalScopeExecutionState; |
class WorkerScriptController { |
public: |
@@ -72,7 +58,7 @@ public: |
void evaluate(const ScriptSourceCode&, RefPtrWillBeRawPtr<ErrorEvent>* = 0); |
- void rethrowExceptionFromImportedScript(PassRefPtrWillBeRawPtr<ErrorEvent>); |
+ void rethrowExceptionFromImportedScript(PassRefPtrWillBeRawPtr<ErrorEvent>, ExceptionState&); |
// Async request to terminate a future JS execution. Eventually causes termination |
// exception raised during JS execution, if the worker thread happens to run JS. |
@@ -89,9 +75,6 @@ public: |
void disableEval(const String&); |
- // Evaluate a script file in the current execution environment. |
- ScriptValue evaluate(const String& script, const String& fileName, const TextPosition& scriptStartPosition, WorkerGlobalScopeExecutionState*); |
- |
v8::Isolate* isolate() const { return m_isolate; } |
DOMWrapperWorld& world() const { return *m_world; } |
ScriptState* scriptState() { return m_scriptState.get(); } |
@@ -103,8 +86,12 @@ public: |
// until real work has been done. |
bool idleNotification() { return v8::V8::IdleNotification(); } |
- |
private: |
+ class WorkerGlobalScopeExecutionState; |
+ |
+ // Evaluate a script file in the current execution environment. |
+ ScriptValue evaluate(const String& script, const String& fileName, const TextPosition& scriptStartPosition); |
+ |
v8::Isolate* m_isolate; |
WorkerGlobalScope& m_workerGlobalScope; |
RefPtr<ScriptState> m_scriptState; |
@@ -113,7 +100,15 @@ private: |
bool m_executionForbidden; |
bool m_executionScheduledToTerminate; |
mutable Mutex m_scheduledTerminationMutex; |
- RefPtrWillBePersistent<ErrorEvent> m_errorEventFromImportedScript; |
+ |
+ // |m_globalScopeExecutionState| refers to a stack object |
+ // that evaluate() allocates; evaluate() ensuring that the |
+ // pointer reference to it is removed upon returning. Hence |
+ // kept as a bare pointer here, and not a Persistent with |
+ // Oilpan enabled; stack scanning will visit the object and |
+ // trace its on-heap fields. |
+ GC_PLUGIN_IGNORE("394615") |
+ WorkerGlobalScopeExecutionState* m_globalScopeExecutionState; |
OwnPtr<V8IsolateInterruptor> m_interruptor; |
}; |