aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2017-08-30 14:25:39 +0200
committerLars Knoll <lars.knoll@qt.io>2017-09-01 12:30:27 +0000
commit85fe2814a1397a17804d8eace4a70e5b7df854b6 (patch)
treeeecaf550665c886e2b1a2f3add6e91f2ba01297d /src
parentede52ec76ed0939ce41bb81843dc750241c6e78f (diff)
Get rid of the FunctionObject parameter to VME::exec()
Change-Id: I5b833d1f76899a5b8fceb0f4fc109b77b1b431fc Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/qml/jsruntime/qv4context.cpp5
-rw-r--r--src/qml/jsruntime/qv4context_p.h2
-rw-r--r--src/qml/jsruntime/qv4function_p.h16
-rw-r--r--src/qml/jsruntime/qv4functionobject.cpp4
-rw-r--r--src/qml/jsruntime/qv4runtime.cpp5
-rw-r--r--src/qml/jsruntime/qv4vme_moth.cpp4
-rw-r--r--src/qml/jsruntime/qv4vme_moth_p.h2
7 files changed, 17 insertions, 21 deletions
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<uint>(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<Heap::FunctionObject *>(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<JSStackFrame *>(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