diff options
author | Lars Knoll <lars.knoll@qt.io> | 2017-08-01 14:27:50 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@qt.io> | 2017-08-02 14:09:17 +0000 |
commit | 590ff6756513203ea12f5b751bbf7001949501bd (patch) | |
tree | c932020befcfad46f40bf304b803ccd81b0a7845 /src/qml/jsruntime/qv4value.cpp | |
parent | 13606c6a17d17da1441a1aa25b9922e52b273eee (diff) |
Optimize Value::toBoolean()
Change-Id: Ic1131d6e3b4e04fd1c9e0e045ae94cd47cef5ae2
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4value.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4value.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/qml/jsruntime/qv4value.cpp b/src/qml/jsruntime/qv4value.cpp index 4fd5597475..8292a48e45 100644 --- a/src/qml/jsruntime/qv4value.cpp +++ b/src/qml/jsruntime/qv4value.cpp @@ -77,24 +77,25 @@ int Value::toUInt16() const bool Value::toBoolean() const { - if (isInteger() || isBoolean()) + if (integerCompatible()) return static_cast<bool>(int_32()); - if (isUndefined() || isNull()) - return false; - - if (isManaged()) { + if (isManagedOrUndefined()) { + Heap::Base *b = m(); + if (!b) + return false; #ifdef V4_BOOTSTRAP Q_UNIMPLEMENTED(); #else - if (String *s = stringValue()) - return s->toQString().length() > 0; + if (b->vtable()->isString) + return static_cast<Heap::String *>(b)->length() > 0; #endif return true; } // double - return doubleValue() && !std::isnan(doubleValue()); + double d = doubleValue(); + return d && !std::isnan(d); } double Value::toInteger() const |