aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2017-08-01 14:32:05 +0200
committerErik Verbruggen <erik.verbruggen@qt.io>2017-08-02 14:11:07 +0000
commit348f24532f2b6b34eebd15207da0c510d6f499d0 (patch)
tree2575bee43bbbaa04cf88a449102cf08d6ff977b5 /src/qml/jsruntime
parent3eee384725cba4776493ce6d9e9e9e78dabf653e (diff)
Optimize UPlus, Increment and Decrement operations
Change-Id: I279b055196850051493dc7b10f0cf159ff834e7d Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Diffstat (limited to 'src/qml/jsruntime')
-rw-r--r--src/qml/jsruntime/qv4vme_moth.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/qml/jsruntime/qv4vme_moth.cpp b/src/qml/jsruntime/qv4vme_moth.cpp
index e7431ebd1c..53f02fa990 100644
--- a/src/qml/jsruntime/qv4vme_moth.cpp
+++ b/src/qml/jsruntime/qv4vme_moth.cpp
@@ -877,7 +877,7 @@ QV4::ReturnedValue VME::exec(ExecutionEngine *engine, const uchar *code)
MOTH_END_INSTR(UNot)
MOTH_BEGIN_INSTR(UPlus)
- if (!accumulator.isInteger()) {
+ if (!accumulator.isNumber()) {
STORE_ACCUMULATOR(Runtime::method_uPlus(accumulator));
}
MOTH_END_INSTR(UPlus)
@@ -902,6 +902,8 @@ QV4::ReturnedValue VME::exec(ExecutionEngine *engine, const uchar *code)
MOTH_BEGIN_INSTR(Increment)
if (Q_LIKELY(accumulator.isInteger())) {
accumulator = add_int32(accumulator.int_32(), 1);
+ } else if (accumulator.isDouble()) {
+ accumulator = QV4::Encode(accumulator.doubleValue() + 1.);
} else {
STORE_ACCUMULATOR(Runtime::method_increment(accumulator));
}
@@ -910,6 +912,8 @@ QV4::ReturnedValue VME::exec(ExecutionEngine *engine, const uchar *code)
MOTH_BEGIN_INSTR(Decrement)
if (Q_LIKELY(accumulator.isInteger())) {
accumulator = sub_int32(accumulator.int_32(), 1);
+ } else if (accumulator.isDouble()) {
+ accumulator = QV4::Encode(accumulator.doubleValue() - 1.);
} else {
STORE_ACCUMULATOR(Runtime::method_decrement(accumulator));
}