summaryrefslogtreecommitdiffstats
path: root/src/script/api/qscriptengineagent.cpp
diff options
context:
space:
mode:
authorKent Hansen <khansen@trolltech.com>2009-08-20 13:55:13 (GMT)
committerKent Hansen <khansen@trolltech.com>2009-08-20 13:55:13 (GMT)
commit6fec99fd1fc256437c5c651209084f479005a7a7 (patch)
tree91b2369cf4d8e0a5160b1b0ed87458627c8ab25a /src/script/api/qscriptengineagent.cpp
parent909512e0f0ab2a11d0c4ecdaef957ad7a5c58292 (diff)
downloadQt-6fec99fd1fc256437c5c651209084f479005a7a7.zip
Qt-6fec99fd1fc256437c5c651209084f479005a7a7.tar.gz
Qt-6fec99fd1fc256437c5c651209084f479005a7a7.tar.bz2
provide line number information for innermost call frame
For the innermost frame, we don't have a returnPC, so use the line number that was last passed to the engine agent.
Diffstat (limited to 'src/script/api/qscriptengineagent.cpp')
-rw-r--r--src/script/api/qscriptengineagent.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/script/api/qscriptengineagent.cpp b/src/script/api/qscriptengineagent.cpp
index ba8e5e9..6417ed8 100644
--- a/src/script/api/qscriptengineagent.cpp
+++ b/src/script/api/qscriptengineagent.cpp
@@ -163,9 +163,12 @@ void QScriptEngineAgentPrivate::exceptionCatch(const JSC::DebuggerCallFrame& fra
void QScriptEngineAgentPrivate::atStatement(const JSC::DebuggerCallFrame& frame, intptr_t sourceID, int lineno, int column)
{
JSC::CallFrame *oldFrame = engine->currentFrame;
+ int oldAgentLineNumber = engine->agentLineNumber;
engine->currentFrame = frame.callFrame();
+ engine->agentLineNumber = lineno;
q_ptr->positionChange(sourceID, lineno, column);
engine->currentFrame = oldFrame;
+ engine->agentLineNumber = oldAgentLineNumber;
}
void QScriptEngineAgentPrivate::functionExit(const JSC::JSValue& returnValue, intptr_t sourceID)
@@ -186,11 +189,14 @@ void QScriptEngineAgentPrivate::didReachBreakpoint(const JSC::DebuggerCallFrame&
{
if (q_ptr->supportsExtension(QScriptEngineAgent::DebuggerInvocationRequest)) {
JSC::CallFrame *oldFrame = engine->currentFrame;
+ int oldAgentLineNumber = engine->agentLineNumber;
engine->currentFrame = frame.callFrame();
+ engine->agentLineNumber = lineno;
QList<QVariant> args;
args << qint64(sourceID) << lineno << column;
q_ptr->extension(QScriptEngineAgent::DebuggerInvocationRequest, args);
engine->currentFrame = oldFrame;
+ engine->agentLineNumber = oldAgentLineNumber;
}
};