aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2017-08-06 20:37:24 +0200
committerLars Knoll <lars.knoll@qt.io>2017-08-08 18:59:39 +0000
commita0720e562c464a5b22e4cbd74b48212e5d3bf6e4 (patch)
tree5329c441f3bfa8a2cfce8501fec0a5224b7a762d /src
parent60174306e0e499140757443cf4d3f7f54c3c17b7 (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.cpp8
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)