diff options
author | Lars Knoll <lars.knoll@qt.io> | 2017-10-20 17:19:25 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2017-11-07 09:00:48 +0000 |
commit | e72306a6f2aeb2bddbb462c205db8fad2fb5a1a4 (patch) | |
tree | 3b83e1cead58d97c2b055283487500472ca7d698 /src/qml/jsruntime/qv4globalobject.cpp | |
parent | bc5ff76e5afe6356bebb344c9a5d8b304e852f3c (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.cpp | 14 |
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); } |