aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4globalobject.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2017-10-20 17:19:25 +0200
committerLars Knoll <lars.knoll@qt.io>2017-11-07 09:00:48 +0000
commite72306a6f2aeb2bddbb462c205db8fad2fb5a1a4 (patch)
tree3b83e1cead58d97c2b055283487500472ca7d698 /src/qml/jsruntime/qv4globalobject.cpp
parentbc5ff76e5afe6356bebb344c9a5d8b304e852f3c (diff)
Further cleanup JSCallData
Avoid allocations on the JS stack if possible Change-Id: I344cd6dceb6264314f9d22c94db22b22d1d24d14 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4globalobject.cpp')
-rw-r--r--src/qml/jsruntime/qv4globalobject.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/qml/jsruntime/qv4globalobject.cpp b/src/qml/jsruntime/qv4globalobject.cpp
index 4e96b01185..f962aa29bc 100644
--- a/src/qml/jsruntime/qv4globalobject.cpp
+++ b/src/qml/jsruntime/qv4globalobject.cpp
@@ -376,9 +376,9 @@ ReturnedValue EvalFunction::evalCall(CallData *callData, bool directCall) const
ScopedFunctionObject e(scope, FunctionObject::createScriptFunction(ctx, function));
JSCallData jsCallData(scope, 0);
if (directCall)
- jsCallData->thisObject = scope.engine->currentStackFrame->thisObject();
+ *jsCallData->thisObject = scope.engine->currentStackFrame->thisObject();
else
- jsCallData->thisObject = scope.engine->globalObject;
+ *jsCallData->thisObject = scope.engine->globalObject;
return e->call(jsCallData);
}
@@ -387,10 +387,12 @@ ReturnedValue EvalFunction::evalCall(CallData *callData, bool directCall) const
// set the correct v4 function for the context
ctx->d()->v4Function = function;
- JSCallData jsCall(scope);
- jsCall->thisObject = scope.engine->currentStackFrame->thisObject();
- jsCall->context = *ctx;
- return function->call(jsCall.callData());
+ JSCallData jsCallData(scope);
+ *jsCallData->thisObject = scope.engine->currentStackFrame->thisObject();
+ CallData *cData = jsCallData.callData();
+ cData->context = *ctx;
+
+ return function->call(cData);
}