diff options
author | Lars Knoll <[email protected]> | 2017-09-01 11:48:15 +0200 |
---|---|---|
committer | Lars Knoll <[email protected]> | 2017-09-02 07:12:17 +0000 |
commit | 74c8fe86755af485f8d0a47799d6d50f00070f05 (patch) | |
tree | 9e3d8c51d46d9f0fa2555cc77d184d6b3ee1be7d /src/qml/jsruntime/qv4globalobject.cpp | |
parent | a91383545c6f487cff61f401d11f1e85939222e9 (diff) |
Always set the correct FunctionObject when calling JS functions
Renamed ScopedCallData to JSCall, enforced passing a JS
FunctionObject to it, and added call() and callAsConstructor()
methods to it.
Change-Id: I30db65c9765c2896b5909fe2105c0934c6dad861
Reviewed-by: Simon Hausmann <[email protected]>
Diffstat (limited to 'src/qml/jsruntime/qv4globalobject.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4globalobject.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/qml/jsruntime/qv4globalobject.cpp b/src/qml/jsruntime/qv4globalobject.cpp index 74173f6a6a..11105dfdcb 100644 --- a/src/qml/jsruntime/qv4globalobject.cpp +++ b/src/qml/jsruntime/qv4globalobject.cpp @@ -374,12 +374,12 @@ ReturnedValue EvalFunction::evalCall(CallData *callData, bool directCall) const if (function->isStrict() || (ctx->d()->v4Function->isStrict())) { ScopedFunctionObject e(scope, FunctionObject::createScriptFunction(ctx, function)); - ScopedCallData callData(scope, 0); + JSCall jsCall(scope, e, 0); if (directCall) - callData->thisObject = scope.engine->currentStackFrame->thisObject(); + jsCall->thisObject = scope.engine->currentStackFrame->thisObject(); else - callData->thisObject = scope.engine->globalObject; - return e->call(callData); + jsCall->thisObject = scope.engine->globalObject; + return jsCall.call(); } ContextStateSaver stateSaver(scope, ctx); @@ -387,10 +387,10 @@ ReturnedValue EvalFunction::evalCall(CallData *callData, bool directCall) const // set the correct v4 function for the context ctx->d()->v4Function = function; - ScopedCallData cData(scope); - cData->thisObject = scope.engine->currentStackFrame->thisObject(); - cData->context = *ctx; - return function->call(cData); + JSCall jsCall(scope, nullptr); + jsCall->thisObject = scope.engine->currentStackFrame->thisObject(); + jsCall->context = *ctx; + return function->call(jsCall); } |