2008-07-24 Geoffrey Garen <ggaren@apple.com>
authorggaren@apple.com <ggaren@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 25 Jul 2008 06:40:38 +0000 (06:40 +0000)
committerggaren@apple.com <ggaren@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 25 Jul 2008 06:40:38 +0000 (06:40 +0000)
commit9d585b2de86221e5aa957d3988284d370e919d81
treea1c2f00171afebf47823093952337fd4b4b3896b
parent826e5c7b48069b85b164538119758c878ac3dcdf
2008-07-24  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Maciej Stachowiak.

        Fixed a strict aliasing violation, which caused hash tables with floating
        point keys not to find items that were indeed in the tables
        (intermittently, and only in release builds, of course).

        SunSpider reports no change.

        This bug doesn't seem to affect any existing code, but it causes obvious
        crashes in some new code I'm working on.

        * wtf/HashFunctions.h:
        (WTF::FloatHash::hash): Use a union when punning between a float / double
        and an unsigned (bucket of bits). With strict aliasing enabled, unions
        are the only safe way to do this kind of type punning.

        * wtf/HashTable.h: When rehashing, ASSERT that the item we just added to
        the table is indeed in the table. In the buggy case described above, this
        ASSERT fires.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@35334 268f45cc-cd09-0410-ab3c-d52691b4dbfc
JavaScriptCore/ChangeLog
JavaScriptCore/wtf/HashFunctions.h
JavaScriptCore/wtf/HashTable.h