Layout Test js/math-clz32.html is failing
authorpvollan@apple.com <pvollan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 27 Mar 2019 16:12:22 +0000 (16:12 +0000)
committerpvollan@apple.com <pvollan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 27 Mar 2019 16:12:22 +0000 (16:12 +0000)
https://bugs.webkit.org/show_bug.cgi?id=196209

Reviewed by Ross Kirsling.

Source/WTF:

Use the correct number of loop iterations when counting leading zeros. Also, the
count was off by one for the Win64 case.

* wtf/MathExtras.h:
(WTF::clz):

LayoutTests:

* platform/win/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@243544 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/platform/win/TestExpectations
Source/WTF/ChangeLog
Source/WTF/wtf/MathExtras.h

index 0480bd9..b38aad6 100644 (file)
@@ -1,3 +1,12 @@
+2019-03-27  Per Arne Vollan  <pvollan@apple.com>
+
+        Layout Test js/math-clz32.html is failing
+        https://bugs.webkit.org/show_bug.cgi?id=196209
+
+        Reviewed by Ross Kirsling.
+
+        * platform/win/TestExpectations:
+
 2019-03-26  Simon Fraser  <simon.fraser@apple.com>
 
         [iOS WK2] Fixed elements in frames can be misplaced sometimes
index be74e6c..669fee8 100644 (file)
@@ -4303,4 +4303,3 @@ webkit.org/b/195461 http/tests/referrer-policy-iframe/origin/cross-origin-http.h
 webkit.org/b/195461 http/tests/referrer-policy-iframe/origin/same-origin.html [ Failure ]
 webkit.org/b/195461 http/tests/referrer-policy-iframe/unsafe-url/cross-origin-http.https.html [ Failure ]
 
-webkit.org/b/196209 js/math-clz32.html [ Failure ]
index 85d69ae..a310347 100644 (file)
@@ -1,3 +1,16 @@
+2019-03-27  Per Arne Vollan  <pvollan@apple.com>
+
+        Layout Test js/math-clz32.html is failing
+        https://bugs.webkit.org/show_bug.cgi?id=196209
+
+        Reviewed by Ross Kirsling.
+
+        Use the correct number of loop iterations when counting leading zeros. Also, the
+        count was off by one for the Win64 case.
+
+        * wtf/MathExtras.h:
+        (WTF::clz):
+
 2019-03-26  Keith Rollin  <krollin@apple.com>
 
         Inhibit CFNetwork logging in private sessions
index 49a3642..8080533 100644 (file)
@@ -619,12 +619,12 @@ template<typename T>
 inline unsigned clz(T value)
 {
     constexpr unsigned bitSize = sizeof(T) * CHAR_BIT;
-    constexpr unsigned bitSize64 = sizeof(uint64_t) * CHAR_BIT;
 
     using UT = typename std::make_unsigned<T>::type;
     UT uValue = value;
 
 #if COMPILER(GCC_COMPATIBLE)
+    constexpr unsigned bitSize64 = sizeof(uint64_t) * CHAR_BIT;
     if (uValue)
         return __builtin_clzll(uValue) - (bitSize64 - bitSize);
     return bitSize;
@@ -634,15 +634,14 @@ inline unsigned clz(T value)
     // _BitScanReverse64 is defined in X86_64 and ARM in MSVC supported environments.
     unsigned long ret = 0;
     if (_BitScanReverse64(&ret, uValue))
-        return bitSize - ret;
+        return bitSize - 1 - ret;
     return bitSize;
 #else
     unsigned zeroCount = 0;
-    for (int i = bitSize64 - 1; i >= 0; i--) {
-        if (!(static_cast<uint64_t>(uValue) >> i))
-            zeroCount++;
-        else
+    for (int i = bitSize - 1; i >= 0; i--) {
+        if (uValue >> i)
             break;
+        zeroCount++;
     }
     return zeroCount;
 #endif