From 85fe2814a1397a17804d8eace4a70e5b7df854b6 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Wed, 30 Aug 2017 14:25:39 +0200 Subject: Get rid of the FunctionObject parameter to VME::exec() Change-Id: I5b833d1f76899a5b8fceb0f4fc109b77b1b431fc Reviewed-by: Simon Hausmann --- src/qml/jsruntime/qv4context.cpp | 5 ++--- src/qml/jsruntime/qv4context_p.h | 2 +- src/qml/jsruntime/qv4function_p.h | 16 ++++++++-------- src/qml/jsruntime/qv4functionobject.cpp | 4 ++-- src/qml/jsruntime/qv4runtime.cpp | 5 ++--- src/qml/jsruntime/qv4vme_moth.cpp | 4 +--- src/qml/jsruntime/qv4vme_moth_p.h | 2 +- 7 files changed, 17 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/qml/jsruntime/qv4context.cpp b/src/qml/jsruntime/qv4context.cpp index eaf54282e7..d672df40e8 100644 --- a/src/qml/jsruntime/qv4context.cpp +++ b/src/qml/jsruntime/qv4context.cpp @@ -55,7 +55,7 @@ DEFINE_MANAGED_VTABLE(ExecutionContext); DEFINE_MANAGED_VTABLE(CallContext); DEFINE_MANAGED_VTABLE(CatchContext); -Heap::CallContext *ExecutionContext::newCallContext(Heap::ExecutionContext *outer, Function *function, CallData *callData, const FunctionObject *f) +Heap::CallContext *ExecutionContext::newCallContext(Heap::ExecutionContext *outer, Function *function, CallData *callData) { uint nFormals = qMax(static_cast(callData->argc), function->nFormals); uint localsAndFormals = function->compiledFunction->nLocals + nFormals; @@ -68,8 +68,7 @@ Heap::CallContext *ExecutionContext::newCallContext(Heap::ExecutionContext *oute c->v4Function = function; c->outer.set(v4, outer); - if (f) - c->function.set(v4, f->d()); + c->function.set(v4, static_cast(callData->function.m())); const CompiledData::Function *compiledFunction = function->compiledFunction; uint nLocals = compiledFunction->nLocals; diff --git a/src/qml/jsruntime/qv4context_p.h b/src/qml/jsruntime/qv4context_p.h index fdfcc7a345..75786cea9b 100644 --- a/src/qml/jsruntime/qv4context_p.h +++ b/src/qml/jsruntime/qv4context_p.h @@ -197,7 +197,7 @@ struct Q_QML_EXPORT ExecutionContext : public Managed Q_MANAGED_TYPE(ExecutionContext) V4_INTERNALCLASS(ExecutionContext) - static Heap::CallContext *newCallContext(Heap::ExecutionContext *outer, Function *function, CallData *callData, const FunctionObject *f); + static Heap::CallContext *newCallContext(Heap::ExecutionContext *outer, Function *function, CallData *callData); Heap::ExecutionContext *newWithContext(Heap::Object *with); Heap::CatchContext *newCatchContext(Heap::String *exceptionVarName, ReturnedValue exceptionValue); diff --git a/src/qml/jsruntime/qv4function_p.h b/src/qml/jsruntime/qv4function_p.h index 1cfd15bbce..d5dcce58c8 100644 --- a/src/qml/jsruntime/qv4function_p.h +++ b/src/qml/jsruntime/qv4function_p.h @@ -63,15 +63,15 @@ struct Q_QML_EXPORT Function { const CompiledData::Function *compiledFunction; CompiledData::CompilationUnit *compilationUnit; - ReturnedValue execute(Heap::ExecutionContext *c, CallData *callData, const FunctionObject *f = 0) { - return code(f, callData, c, this); + ReturnedValue execute(Heap::ExecutionContext *c, CallData *callData) { + return code(callData, c, this); } - ReturnedValue call(Heap::ExecutionContext *c, CallData *callData, const FunctionObject *f = 0) { - return call(f, callData, c, this); + ReturnedValue call(Heap::ExecutionContext *c, CallData *callData) { + return call(callData, c, this); } - typedef ReturnedValue (*Code)(const FunctionObject *, CallData *, Heap::ExecutionContext *c, Function *); + typedef ReturnedValue (*Code)(CallData *, Heap::ExecutionContext *c, Function *); Code code; const uchar *codeData; @@ -104,12 +104,12 @@ struct Q_QML_EXPORT Function { } private: - static ReturnedValue call(const FunctionObject *f, CallData *callData, Heap::ExecutionContext *context, Function *function) + static ReturnedValue call(CallData *callData, Heap::ExecutionContext *context, Function *function) { if (!function->canUseSimpleCall) - context = ExecutionContext::newCallContext(context, function, callData, f); + context = ExecutionContext::newCallContext(context, function, callData); - return function->execute(context, callData, f); + return function->execute(context, callData); } }; diff --git a/src/qml/jsruntime/qv4functionobject.cpp b/src/qml/jsruntime/qv4functionobject.cpp index a47ea43965..218e591486 100644 --- a/src/qml/jsruntime/qv4functionobject.cpp +++ b/src/qml/jsruntime/qv4functionobject.cpp @@ -368,7 +368,7 @@ ReturnedValue ScriptFunction::construct(const Managed *that, CallData *callData) QV4::Function *v4Function = f->function(); Q_ASSERT(v4Function); - ReturnedValue result = v4Function->call(f->scope(), callData, f); + ReturnedValue result = v4Function->call(f->scope(), callData); if (Q_UNLIKELY(v4->hasException)) return Encode::undefined(); @@ -388,7 +388,7 @@ ReturnedValue ScriptFunction::call(const Managed *that, CallData *callData) QV4::Function *v4Function = f->function(); Q_ASSERT(v4Function); - return v4Function->call(f->scope(), callData, f); + return v4Function->call(f->scope(), callData); } void Heap::ScriptFunction::init(QV4::ExecutionContext *scope, Function *function) diff --git a/src/qml/jsruntime/qv4runtime.cpp b/src/qml/jsruntime/qv4runtime.cpp index 5790ddfe10..f31da2e72e 100644 --- a/src/qml/jsruntime/qv4runtime.cpp +++ b/src/qml/jsruntime/qv4runtime.cpp @@ -1081,9 +1081,8 @@ ReturnedValue Runtime::method_callProperty(ExecutionEngine *engine, int nameInde ReturnedValue Runtime::method_callPropertyLookup(ExecutionEngine *engine, uint index, CallData *callData) { Lookup *l = engine->currentStackFrame->v4Function->compilationUnit->runtimeLookups + index; - Value v; - v = l->getter(l, engine, callData->thisObject); - Object *o = v.objectValue(); + callData->function = l->getter(l, engine, callData->thisObject); + Object *o = callData->function.objectValue(); if (Q_LIKELY(o)) return o->call(callData); diff --git a/src/qml/jsruntime/qv4vme_moth.cpp b/src/qml/jsruntime/qv4vme_moth.cpp index 2a14aa28fa..7c389e2dd3 100644 --- a/src/qml/jsruntime/qv4vme_moth.cpp +++ b/src/qml/jsruntime/qv4vme_moth.cpp @@ -489,7 +489,7 @@ static bool compareEqualInt(Value &accumulator, Value lhs, int rhs) } while (false) -QV4::ReturnedValue VME::exec(const FunctionObject *jsFunction, CallData *callData, Heap::ExecutionContext *context, QV4::Function *function) +QV4::ReturnedValue VME::exec(CallData *callData, Heap::ExecutionContext *context, QV4::Function *function) { qt_v4ResolvePendingBreakpointsHook(); @@ -515,8 +515,6 @@ QV4::ReturnedValue VME::exec(const FunctionObject *jsFunction, CallData *callDat stack = engine->jsAlloca(function->compiledFunction->nRegisters + sizeof(JSStackFrame)/sizeof(QV4::Value)); frame.jsFrame = reinterpret_cast(stack); frame.jsFrame->context = context; - if (jsFunction) - frame.jsFrame->jsFunction = *jsFunction; QV4::Value &accumulator = frame.jsFrame->accumulator; QV4::ReturnedValue acc = Encode::undefined(); diff --git a/src/qml/jsruntime/qv4vme_moth_p.h b/src/qml/jsruntime/qv4vme_moth_p.h index 5658459af1..5911081b28 100644 --- a/src/qml/jsruntime/qv4vme_moth_p.h +++ b/src/qml/jsruntime/qv4vme_moth_p.h @@ -65,7 +65,7 @@ namespace Moth { class VME { public: - static QV4::ReturnedValue exec(const FunctionObject *jsFunction, CallData *callData, Heap::ExecutionContext *context, QV4::Function *); + static QV4::ReturnedValue exec(CallData *callData, Heap::ExecutionContext *context, QV4::Function *); }; } // namespace Moth -- cgit v1.2.3