Diff
Modified: trunk/Source/WebCore/ChangeLog (135223 => 135224)
--- trunk/Source/WebCore/ChangeLog 2012-11-20 02:02:26 UTC (rev 135223)
+++ trunk/Source/WebCore/ChangeLog 2012-11-20 02:03:54 UTC (rev 135224)
@@ -1,3 +1,27 @@
+2012-11-19 Peter Wang <[email protected]>
+
+ Web Inspector: [JSC] worker debugger shouldn't stop for "willExecuteProgram" instruction
+ https://bugs.webkit.org/show_bug.cgi?id=102637
+
+ Reviewed by Timothy Hatcher.
+
+ Override the interface "willExecuteProgram" to let WorkerScriptDebugServer to avoid to stop for it.
+
+ No new DRT test case. Sorry, so far it seems impossible to write a case to controle the popupped
+ worker inspector window.
+
+ * bindings/js/ScriptDebugServer.cpp:
+ (WebCore::ScriptDebugServer::createCallFrame):
+ (WebCore::ScriptDebugServer::callEvent):
+ (WebCore::ScriptDebugServer::willExecuteProgram):
+ * bindings/js/ScriptDebugServer.h:
+ (ScriptDebugServer):
+ * bindings/js/WorkerScriptDebugServer.cpp:
+ (WebCore::WorkerScriptDebugServer::willExecuteProgram):
+ (WebCore):
+ * bindings/js/WorkerScriptDebugServer.h:
+ (WorkerScriptDebugServer):
+
2012-11-19 Pratik Solanki <[email protected]>
For single element arrays use the pointer into the CFDataRef instead of copying data
Modified: trunk/Source/WebCore/bindings/js/ScriptDebugServer.cpp (135223 => 135224)
--- trunk/Source/WebCore/bindings/js/ScriptDebugServer.cpp 2012-11-20 02:02:26 UTC (rev 135223)
+++ trunk/Source/WebCore/bindings/js/ScriptDebugServer.cpp 2012-11-20 02:03:54 UTC (rev 135224)
@@ -395,7 +395,7 @@
m_callingListeners = false;
}
-void ScriptDebugServer::createCallFrameAndPauseIfNeeded(const DebuggerCallFrame& debuggerCallFrame, intptr_t sourceID, int lineNumber, int columnNumber)
+void ScriptDebugServer::createCallFrame(const DebuggerCallFrame& debuggerCallFrame, intptr_t sourceID, int lineNumber, int columnNumber)
{
TextPosition textPosition(OrdinalNumber::fromOneBasedInt(lineNumber), OrdinalNumber::fromZeroBasedInt(columnNumber));
m_currentCallFrame = _javascript_CallFrame::create(debuggerCallFrame, m_currentCallFrame, sourceID, textPosition);
@@ -403,7 +403,6 @@
m_lastExecutedLine = -1;
m_lastExecutedSourceId = sourceID;
}
- pauseIfNeeded(debuggerCallFrame.dynamicGlobalObject());
}
void ScriptDebugServer::updateCallFrameAndPauseIfNeeded(const DebuggerCallFrame& debuggerCallFrame, intptr_t sourceID, int lineNumber, int columnNumber)
@@ -452,8 +451,10 @@
void ScriptDebugServer::callEvent(const DebuggerCallFrame& debuggerCallFrame, intptr_t sourceID, int lineNumber, int columnNumber)
{
- if (!m_paused)
- createCallFrameAndPauseIfNeeded(debuggerCallFrame, sourceID, lineNumber, columnNumber);
+ if (!m_paused) {
+ createCallFrame(debuggerCallFrame, sourceID, lineNumber, columnNumber);
+ pauseIfNeeded(debuggerCallFrame.dynamicGlobalObject());
+ }
}
void ScriptDebugServer::atStatement(const DebuggerCallFrame& debuggerCallFrame, intptr_t sourceID, int lineNumber, int columnNumber)
@@ -492,8 +493,10 @@
void ScriptDebugServer::willExecuteProgram(const DebuggerCallFrame& debuggerCallFrame, intptr_t sourceID, int lineNumber, int columnNumber)
{
- if (!m_paused)
- createCallFrameAndPauseIfNeeded(debuggerCallFrame, sourceID, lineNumber, columnNumber);
+ if (!m_paused) {
+ createCallFrame(debuggerCallFrame, sourceID, lineNumber, columnNumber);
+ pauseIfNeeded(debuggerCallFrame.dynamicGlobalObject());
+ }
}
void ScriptDebugServer::didExecuteProgram(const DebuggerCallFrame& debuggerCallFrame, intptr_t sourceID, int lineNumber, int columnNumber)
Modified: trunk/Source/WebCore/bindings/js/ScriptDebugServer.h (135223 => 135224)
--- trunk/Source/WebCore/bindings/js/ScriptDebugServer.h 2012-11-20 02:02:26 UTC (rev 135223)
+++ trunk/Source/WebCore/bindings/js/ScriptDebugServer.h 2012-11-20 02:03:54 UTC (rev 135224)
@@ -127,7 +127,7 @@
void dispatchDidParseSource(const ListenerSet& listeners, JSC::SourceProvider*, bool isContentScript);
void dispatchFailedToParseSource(const ListenerSet& listeners, JSC::SourceProvider*, int errorLine, const String& errorMessage);
- void createCallFrameAndPauseIfNeeded(const JSC::DebuggerCallFrame&, intptr_t sourceID, int lineNumber, int columnNumber);
+ void createCallFrame(const JSC::DebuggerCallFrame&, intptr_t sourceID, int lineNumber, int columnNumber);
void updateCallFrameAndPauseIfNeeded(const JSC::DebuggerCallFrame&, intptr_t sourceID, int lineNumber, int columnNumber);
void pauseIfNeeded(JSC::JSGlobalObject* dynamicGlobalObject);
Modified: trunk/Source/WebCore/bindings/js/WorkerScriptDebugServer.cpp (135223 => 135224)
--- trunk/Source/WebCore/bindings/js/WorkerScriptDebugServer.cpp 2012-11-20 02:02:26 UTC (rev 135223)
+++ trunk/Source/WebCore/bindings/js/WorkerScriptDebugServer.cpp 2012-11-20 02:03:54 UTC (rev 135224)
@@ -61,6 +61,12 @@
recompileAllJSFunctions(0);
}
+void WorkerScriptDebugServer::willExecuteProgram(const JSC::DebuggerCallFrame& debuggerCallFrame, intptr_t sourceID, int lineNumber, int columnNumber)
+{
+ if (!m_paused)
+ createCallFrame(debuggerCallFrame, sourceID, lineNumber, columnNumber);
+}
+
void WorkerScriptDebugServer::recompileAllJSFunctions(Timer<ScriptDebugServer>*)
{
JSC::JSGlobalData* globalData = m_workerContext->script()->globalData();
Modified: trunk/Source/WebCore/bindings/js/WorkerScriptDebugServer.h (135223 => 135224)
--- trunk/Source/WebCore/bindings/js/WorkerScriptDebugServer.h 2012-11-20 02:02:26 UTC (rev 135223)
+++ trunk/Source/WebCore/bindings/js/WorkerScriptDebugServer.h 2012-11-20 02:03:54 UTC (rev 135224)
@@ -61,6 +61,8 @@
virtual bool isContentScript(JSC::ExecState*) { return false; }
+ virtual void willExecuteProgram(const JSC::DebuggerCallFrame&, intptr_t sourceID, int lineno, int columnNumber);
+
virtual void runEventLoopWhilePaused();
WorkerContext* m_workerContext;