diff options
author | Lars Knoll <lars.knoll@qt.io> | 2017-08-06 22:08:49 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@qt.io> | 2017-08-18 09:56:08 +0000 |
commit | ebc6979801d86ae79dbbbb64c8793d90e0508d18 (patch) | |
tree | 47b1cb3ea38bafc6e874066b53c4754a52b001b2 /src/qml/jsruntime/qv4value.cpp | |
parent | 1109b9df83b78fa8703c063f117b365a21fdccb1 (diff) |
Optimize toInt32()/toUInt32()
And with this there is no need to special case integers
in the BitXxx binops anymore.
Change-Id: I9f94651d776f4e31ff8152fe7ce00dc5b1fa706e
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4value.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4value.cpp | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/src/qml/jsruntime/qv4value.cpp b/src/qml/jsruntime/qv4value.cpp index 8292a48e45..79035bf154 100644 --- a/src/qml/jsruntime/qv4value.cpp +++ b/src/qml/jsruntime/qv4value.cpp @@ -98,14 +98,6 @@ bool Value::toBoolean() const return d && !std::isnan(d); } -double Value::toInteger() const -{ - if (integerCompatible()) - return int_32(); - - return Primitive::toInteger(toNumber()); -} - double Value::toNumberImpl() const { switch (type()) { @@ -245,64 +237,6 @@ bool Value::sameValue(Value other) const { return false; } - -int Primitive::toInt32(double number) -{ - const double D32 = 4294967296.0; - const double D31 = D32 / 2.0; - - if ((number >= -D31 && number < D31)) - return static_cast<int>(number); - - - if (!std::isfinite(number)) - return 0; - - double d = ::floor(::fabs(number)); - if (std::signbit(number)) - d = -d; - - number = ::fmod(d , D32); - - if (number < -D31) - number += D32; - else if (number >= D31) - number -= D32; - - return int(number); -} - -unsigned int Primitive::toUInt32(double number) -{ - const double D32 = 4294967296.0; - if ((number >= 0 && number < D32)) - return static_cast<uint>(number); - - if (!std::isfinite(number)) - return +0; - - double d = ::floor(::fabs(number)); - if (std::signbit(number)) - d = -d; - - number = ::fmod(d , D32); - - if (number < 0) - number += D32; - - return unsigned(number); -} - -double Primitive::toInteger(double number) -{ - if (std::isnan(number)) - return +0; - else if (! number || std::isinf(number)) - return number; - const double v = floor(fabs(number)); - return std::signbit(number) ? -v : v; -} - #ifndef V4_BOOTSTRAP Heap::String *Value::toString(ExecutionEngine *e) const { |