aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/testlib
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-05-22 10:47:36 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2013-05-22 12:27:21 +0200
commitd7f2868e427299c1cb9ec33b3c1939c6ad4e78a7 (patch)
tree9e642a0f8f238c6f70afa4fb70c286a92a701b1c /src/imports/testlib
parent3bd678c76d8ab699e79e5a3cfe43cff2db03fb8f (diff)
Add support for generating stack traces to QV4::ExecutionEngine
This makes it possible to remove the v8::StackTrace API Change-Id: I53eee022a1030f0f6bf9a9268ca7cd3d5975724d Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/imports/testlib')
-rw-r--r--src/imports/testlib/main.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/imports/testlib/main.cpp b/src/imports/testlib/main.cpp
index d854a26af5..1192861856 100644
--- a/src/imports/testlib/main.cpp
+++ b/src/imports/testlib/main.cpp
@@ -106,22 +106,22 @@ public Q_SLOTS:
QQmlV4Handle callerFile(int frameIndex = 0) const
{
- v8::Handle<v8::StackTrace> stacks = v8::StackTrace::CurrentStackTrace(10, v8::StackTrace::kDetailed);
- int count = stacks->GetFrameCount();
- if (count >= frameIndex + 1) {
- v8::Handle<v8::StackFrame> frame = stacks->GetFrame(frameIndex + 1);
- return QQmlV4Handle(frame->GetScriptNameOrSourceURL()->v4Value());
- }
+ QQmlEngine *engine = qmlEngine(this);
+ QV4::ExecutionEngine *v4 = QV8Engine::getV4(engine->handle());
+
+ QVector<QV4::ExecutionEngine::StackFrame> stack = v4->stackTrace(frameIndex + 1);
+ if (stack.size() > frameIndex)
+ return QQmlV4Handle(QV4::Value::fromString(v4->newString(stack.at(frameIndex).source.url())));
return QQmlV4Handle();
}
int callerLine(int frameIndex = 0) const
{
- v8::Handle<v8::StackTrace> stacks = v8::StackTrace::CurrentStackTrace(10, v8::StackTrace::kDetailed);
- int count = stacks->GetFrameCount();
- if (count >= frameIndex + 1) {
- v8::Handle<v8::StackFrame> frame = stacks->GetFrame(frameIndex + 1);
- return frame->GetLineNumber();
- }
+ QQmlEngine *engine = qmlEngine(this);
+ QV4::ExecutionEngine *v4 = QV8Engine::getV4(engine->handle());
+
+ QVector<QV4::ExecutionEngine::StackFrame> stack = v4->stackTrace(frameIndex + 1);
+ if (stack.size() > frameIndex)
+ return stack.at(frameIndex).line;
return -1;
}
};