diff options
author | Lars Knoll <lars.knoll@qt.io> | 2017-08-06 20:37:24 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2017-08-08 18:59:39 +0000 |
commit | a0720e562c464a5b22e4cbd74b48212e5d3bf6e4 (patch) | |
tree | 5329c441f3bfa8a2cfce8501fec0a5224b7a762d /src | |
parent | 60174306e0e499140757443cf4d3f7f54c3c17b7 (diff) |
Optimize the Not instruction
Change-Id: I9a36377ddf846b38f92e50cca7b21ae063576b1e
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/qml/jsruntime/qv4vme_moth.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/qml/jsruntime/qv4vme_moth.cpp b/src/qml/jsruntime/qv4vme_moth.cpp index cc7a5fa6f2..e7cfb8b7e1 100644 --- a/src/qml/jsruntime/qv4vme_moth.cpp +++ b/src/qml/jsruntime/qv4vme_moth.cpp @@ -884,7 +884,11 @@ QV4::ReturnedValue VME::exec(Function *function) MOTH_END_INSTR(JumpStrictNotEqual) MOTH_BEGIN_INSTR(UNot) - STORE_ACCUMULATOR(Runtime::method_uNot(accumulator)); + if (accumulator.integerCompatible()) { + STORE_ACCUMULATOR(Encode(!static_cast<bool>(accumulator.int_32()))) + } else { + STORE_ACCUMULATOR(Runtime::method_uNot(accumulator)); + } MOTH_END_INSTR(UNot) MOTH_BEGIN_INSTR(UPlus) @@ -898,7 +902,7 @@ QV4::ReturnedValue VME::exec(Function *function) accumulator.int_32() != std::numeric_limits<int>::min())) { accumulator = sub_int32(0, accumulator.int_32()); } else { - STORE_ACCUMULATOR(Runtime::method_uMinus(accumulator)); + STORE_ACCUMULATOR(Encode(!accumulator.toBoolean())); } MOTH_END_INSTR(UMinus) |