summaryrefslogtreecommitdiff
path: root/src/qml/jsruntime/qv4functionobject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/jsruntime/qv4functionobject.cpp')
-rw-r--r--src/qml/jsruntime/qv4functionobject.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/qml/jsruntime/qv4functionobject.cpp b/src/qml/jsruntime/qv4functionobject.cpp
index 58e0277395..fb87822a5a 100644
--- a/src/qml/jsruntime/qv4functionobject.cpp
+++ b/src/qml/jsruntime/qv4functionobject.cpp
@@ -447,11 +447,12 @@ ReturnedValue ScriptFunction::construct(Managed *that, CallData *callData)
callData->thisObject = obj.asReturnedValue();
ExecutionContext *ctx = context->newCallContext(f.getPointer(), callData);
+ ExecutionContextSaver ctxSaver(context);
+ ScopedValue result(scope, Q_V4_PROFILE(v4, ctx, f->function));
+
if (f->function->compiledFunction->hasQmlDependencies())
QmlContextWrapper::registerQmlDependencies(v4, f->function->compiledFunction);
- ExecutionContextSaver ctxSaver(context);
- ScopedValue result(scope, Q_V4_PROFILE(v4, ctx, f->function));
if (result->isObject())
return result.asReturnedValue();
return obj.asReturnedValue();
@@ -470,11 +471,13 @@ ReturnedValue ScriptFunction::call(Managed *that, CallData *callData)
CallContext *ctx = context->newCallContext(f, callData);
+ ExecutionContextSaver ctxSaver(context);
+ ScopedValue result(scope, Q_V4_PROFILE(v4, ctx, f->function));
+
if (f->function->compiledFunction->hasQmlDependencies())
QmlContextWrapper::registerQmlDependencies(ctx->engine, f->function->compiledFunction);
- ExecutionContextSaver ctxSaver(context);
- return Q_V4_PROFILE(v4, ctx, f->function);
+ return result.asReturnedValue();
}
DEFINE_OBJECT_VTABLE(SimpleScriptFunction);
@@ -542,11 +545,11 @@ ReturnedValue SimpleScriptFunction::construct(Managed *that, CallData *callData)
}
Q_ASSERT(v4->currentContext() == &ctx);
+ Scoped<Object> result(scope, Q_V4_PROFILE(v4, &ctx, f->function));
+
if (f->function->compiledFunction->hasQmlDependencies())
QmlContextWrapper::registerQmlDependencies(v4, f->function->compiledFunction);
- Scoped<Object> result(scope, Q_V4_PROFILE(v4, &ctx, f->function));
-
if (!result)
return callData->thisObject.asReturnedValue();
return result.asReturnedValue();
@@ -579,10 +582,12 @@ ReturnedValue SimpleScriptFunction::call(Managed *that, CallData *callData)
}
Q_ASSERT(v4->currentContext() == &ctx);
+ ScopedValue result(scope, Q_V4_PROFILE(v4, &ctx, f->function));
+
if (f->function->compiledFunction->hasQmlDependencies())
QmlContextWrapper::registerQmlDependencies(v4, f->function->compiledFunction);
- return Q_V4_PROFILE(v4, &ctx, f->function);
+ return result.asReturnedValue();
}