aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler/qv4isel_moth.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2017-06-27 16:06:29 +0200
committerLars Knoll <lars.knoll@qt.io>2017-06-29 08:33:17 +0000
commitdfe826d7f86db99bd6ecf681ec73c2e8c8b25a15 (patch)
treee3a98ece0c3e5599a44bbfd817abe2932d4b9355 /src/qml/compiler/qv4isel_moth.cpp
parent987734ff5872c397651630a616a002947fec3810 (diff)
Switch over to new JS call setup
Differences: - push parameters on the stack, including space for CallData members - call instructions calculate the argument start - use temp space above the calldata to evaluate arguments - fewer temporaries are needed when a call is done while generating the arguments of another call - when calling the function, the js stack space above the callData is not used, allowing for optimizations in the future - Array and ObjectLiteral use the same mechanism Change-Id: Id100fa06f12cc9d941b0f90b0b81b8270a8e4f5d Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/qml/compiler/qv4isel_moth.cpp')
-rw-r--r--src/qml/compiler/qv4isel_moth.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/qml/compiler/qv4isel_moth.cpp b/src/qml/compiler/qv4isel_moth.cpp
index 89140a1a5e..8f11253cca 100644
--- a/src/qml/compiler/qv4isel_moth.cpp
+++ b/src/qml/compiler/qv4isel_moth.cpp
@@ -314,7 +314,7 @@ void InstructionSelection::callValue(IR::Expr *value, IR::ExprList *args, IR::Ex
{
Instruction::CallValue call;
prepareCallArgs(args, call.argc);
- call.callData = callDataStart();
+// call.callData = callDataStart();
call.dest = getParam(value);
call.result = getResultParam(result);
addInstruction(call);
@@ -360,7 +360,7 @@ void InstructionSelection::callProperty(IR::Expr *base, const QString &name, IR:
call.base = getParam(base);
call.name = registerString(name);
prepareCallArgs(args, call.argc);
- call.callData = callDataStart();
+// call.callData = callDataStart();
call.result = getResultParam(result);
addInstruction(call);
}
@@ -374,7 +374,7 @@ void InstructionSelection::callSubscript(IR::Expr *base, IR::Expr *index, IR::Ex
call.base = getParam(base);
call.index = getParam(index);
prepareCallArgs(args, call.argc);
- call.callData = callDataStart();
+// call.callData = callDataStart();
call.result = getResultParam(result);
addInstruction(call);
}
@@ -434,7 +434,7 @@ void InstructionSelection::constructValue(IR::Expr *value, IR::ExprList *args, I
{
Instruction::CreateValue create;
create.func = getParam(value);
- prepareCallArgs(args, create.argc);
+// prepareCallArgs(args, create.argc);
create.callData = callDataStart();
create.result = getResultParam(target);
addInstruction(create);
@@ -1028,7 +1028,7 @@ void InstructionSelection::callBuiltinInvalid(IR::Name *func, IR::ExprList *args
Instruction::CallGlobalLookup call;
call.index = registerGlobalGetterLookup(*func->id);
prepareCallArgs(args, call.argc);
- call.callData = callDataStart();
+// call.callData = callDataStart();
call.result = getResultParam(result);
addInstruction(call);
return;
@@ -1036,7 +1036,7 @@ void InstructionSelection::callBuiltinInvalid(IR::Name *func, IR::ExprList *args
Instruction::CallActivationProperty call;
call.name = registerString(*func->id);
prepareCallArgs(args, call.argc);
- call.callData = callDataStart();
+// call.callData = callDataStart();
call.result = getResultParam(result);
addInstruction(call);
}