StringImpl.h should compile with -Wshorten-64-to-32
authorddkilzer@apple.com <ddkilzer@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 22 Apr 2013 19:13:30 +0000 (19:13 +0000)
committerddkilzer@apple.com <ddkilzer@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 22 Apr 2013 19:13:30 +0000 (19:13 +0000)
<http://webkit.org/b/114970>

Reviewed by Darin Adler.

Fixes the following warnings with -Wshorten-64-to-32:

    StringImpl.h:317:25: error: implicit conversion loses integer precision: 'uintptr_t' (aka 'unsigned long') to 'unsigned int' [-Werror,-Wshorten-64-to-32]
            unsigned hash = reinterpret_cast<uintptr_t>(this);
                     ~~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl): Add static_cast<uint32_t>() to
formalize taking the lower 32-bits of the pointer value on
64-bit architectures.

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

Source/WTF/ChangeLog
Source/WTF/wtf/text/StringImpl.h

index b798b6403c6b086bfb22ec4186f8101315a40bfd..fc4629eeb7cb14eabf8d2847e821814968efa54f 100644 (file)
@@ -1,3 +1,21 @@
+2013-04-22  David Kilzer  <ddkilzer@apple.com>
+
+        StringImpl.h should compile with -Wshorten-64-to-32
+        <http://webkit.org/b/114970>
+
+        Reviewed by Darin Adler.
+
+        Fixes the following warnings with -Wshorten-64-to-32:
+
+            StringImpl.h:317:25: error: implicit conversion loses integer precision: 'uintptr_t' (aka 'unsigned long') to 'unsigned int' [-Werror,-Wshorten-64-to-32]
+                    unsigned hash = reinterpret_cast<uintptr_t>(this);
+                             ~~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+        * wtf/text/StringImpl.h:
+        (WTF::StringImpl::StringImpl): Add static_cast<uint32_t>() to
+        formalize taking the lower 32-bits of the pointer value on
+        64-bit architectures.
+
 2013-04-22  Andreas Kling  <akling@apple.com>
 
         Shrink baseline size of WTF::Vector on 64-bit by switching to unsigned capacity and size.
index 1869d6c6cd96d93a5476bcdb65e98a6c7f6ba5b2..0d9db48b150ce7b8917bb0064bced0f6c441ea89 100644 (file)
@@ -313,7 +313,7 @@ private:
         // keys means that we don't need them to match any other string (in fact,
         // that's exactly the oposite of what we want!), and teh normal hash would
         // lead to lots of conflicts.
-        unsigned hash = reinterpret_cast<uintptr_t>(this);
+        unsigned hash = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(this));
         hash <<= s_flagCount;
         if (!hash)
             hash = 1 << s_flagCount;