diff options
author | Lars Knoll <lars.knoll@qt.io> | 2017-08-01 14:32:05 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@qt.io> | 2017-08-02 14:11:07 +0000 |
commit | 348f24532f2b6b34eebd15207da0c510d6f499d0 (patch) | |
tree | 2575bee43bbbaa04cf88a449102cf08d6ff977b5 /src/qml/jsruntime | |
parent | 3eee384725cba4776493ce6d9e9e9e78dabf653e (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.cpp | 6 |
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)); } |