diff options
author | Lars Knoll <lars.knoll@digia.com> | 2014-02-06 15:13:33 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-07 10:44:34 +0100 |
commit | b4883080781f3ea68e4a688821d353a321c39f95 (patch) | |
tree | 1ac13d8c23aea6b3238750e48a32cc9e37ae6730 /src/qml | |
parent | aaa8257d988f10f8a6f92d6e687d9aaf678aa05c (diff) |
Remove add/sub/mul instruction specializations for numbers
These instructions did hurt more than help, as they converted
ints to doubles. Since the regular add/sub/mul runtime methods
have fast paths for both ints and doubles, we're better off
using those instead.
Change-Id: I0b7a6f95818943bfc8a0669c1c56f7db4e7246e0
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml')
-rw-r--r-- | src/qml/compiler/qv4instr_moth_p.h | 24 | ||||
-rw-r--r-- | src/qml/compiler/qv4isel_moth.cpp | 31 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4vme_moth.cpp | 18 |
3 files changed, 0 insertions, 73 deletions
diff --git a/src/qml/compiler/qv4instr_moth_p.h b/src/qml/compiler/qv4instr_moth_p.h index 7d15b4b010..e3e227796e 100644 --- a/src/qml/compiler/qv4instr_moth_p.h +++ b/src/qml/compiler/qv4instr_moth_p.h @@ -132,9 +132,6 @@ QT_BEGIN_NAMESPACE F(Mul, mul) \ F(Sub, sub) \ F(BinopContext, binopContext) \ - F(AddNumberParams, addNumberParams) \ - F(MulNumberParams, mulNumberParams) \ - F(SubNumberParams, subNumberParams) \ F(LoadThis, loadThis) \ F(LoadQmlIdArray, loadQmlIdArray) \ F(LoadQmlImportedScripts, loadQmlImportedScripts) \ @@ -699,24 +696,6 @@ union Instr Param rhs; Param result; }; - struct instr_addNumberParams { - MOTH_INSTR_HEADER - Param lhs; - Param rhs; - Param result; - }; - struct instr_mulNumberParams { - MOTH_INSTR_HEADER - Param lhs; - Param rhs; - Param result; - }; - struct instr_subNumberParams { - MOTH_INSTR_HEADER - Param lhs; - Param rhs; - Param result; - }; struct instr_loadThis { MOTH_INSTR_HEADER Param result; @@ -826,9 +805,6 @@ union Instr instr_mul mul; instr_sub sub; instr_binopContext binopContext; - instr_addNumberParams addNumberParams; - instr_mulNumberParams mulNumberParams; - instr_subNumberParams subNumberParams; instr_loadThis loadThis; instr_loadQmlIdArray loadQmlIdArray; instr_loadQmlImportedScripts loadQmlImportedScripts; diff --git a/src/qml/compiler/qv4isel_moth.cpp b/src/qml/compiler/qv4isel_moth.cpp index df102af73b..09f4a88b30 100644 --- a/src/qml/compiler/qv4isel_moth.cpp +++ b/src/qml/compiler/qv4isel_moth.cpp @@ -697,37 +697,6 @@ void InstructionSelection::binop(V4IR::AluOp oper, V4IR::Expr *leftSource, V4IR: Param InstructionSelection::binopHelper(V4IR::AluOp oper, V4IR::Expr *leftSource, V4IR::Expr *rightSource, V4IR::Temp *target) { - if (isNumberType(leftSource) && isNumberType(rightSource)) { - switch (oper) { - case V4IR::OpAdd: { - Instruction::AddNumberParams instr; - instr.lhs = getParam(leftSource); - instr.rhs = getParam(rightSource); - instr.result = getResultParam(target); - addInstruction(instr); - return instr.result; - } - case V4IR::OpMul: { - Instruction::MulNumberParams instr; - instr.lhs = getParam(leftSource); - instr.rhs = getParam(rightSource); - instr.result = getResultParam(target); - addInstruction(instr); - return instr.result; - } - case V4IR::OpSub: { - Instruction::SubNumberParams instr; - instr.lhs = getParam(leftSource); - instr.rhs = getParam(rightSource); - instr.result = getResultParam(target); - addInstruction(instr); - return instr.result; - } - default: - break; - } - } - if (oper == V4IR::OpAdd) { Instruction::Add add; add.lhs = getParam(leftSource); diff --git a/src/qml/jsruntime/qv4vme_moth.cpp b/src/qml/jsruntime/qv4vme_moth.cpp index 3d7ce0efcf..df8e3632fb 100644 --- a/src/qml/jsruntime/qv4vme_moth.cpp +++ b/src/qml/jsruntime/qv4vme_moth.cpp @@ -662,24 +662,6 @@ QV4::ReturnedValue VME::run(QV4::ExecutionContext *context, const uchar *code STOREVALUE(instr.result, instr.alu(context, VALUEPTR(instr.lhs), VALUEPTR(instr.rhs))); MOTH_END_INSTR(BinopContext) - MOTH_BEGIN_INSTR(AddNumberParams) - double lhs = VALUE(instr.lhs).asDouble(); - double rhs = VALUE(instr.rhs).asDouble(); - VALUEPTR(instr.result)->setDouble(lhs + rhs); - MOTH_END_INSTR(AddNumberParams) - - MOTH_BEGIN_INSTR(MulNumberParams) - double lhs = VALUE(instr.lhs).asDouble(); - double rhs = VALUE(instr.rhs).asDouble(); - VALUEPTR(instr.result)->setDouble(lhs * rhs); - MOTH_END_INSTR(MulNumberParams) - - MOTH_BEGIN_INSTR(SubNumberParams) - double lhs = VALUE(instr.lhs).asDouble(); - double rhs = VALUE(instr.rhs).asDouble(); - VALUEPTR(instr.result)->setDouble(lhs - rhs); - MOTH_END_INSTR(SubNumberParams) - MOTH_BEGIN_INSTR(Ret) context->engine->stackPop(stackSize); // TRACE(Ret, "returning value %s", result.toString(context)->toQString().toUtf8().constData()); |