From ebc6979801d86ae79dbbbb64c8793d90e0508d18 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Sun, 6 Aug 2017 22:08:49 +0200 Subject: 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 --- src/qml/jsruntime/qv4value.cpp | 66 ------------------------------------------ 1 file changed, 66 deletions(-) (limited to 'src/qml/jsruntime/qv4value.cpp') 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(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(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 { -- cgit v1.2.3