Changeset 272621 in webkit


Ignore:
Timestamp:
Feb 9, 2021 4:34:26 PM (3 years ago)
Author:
ysuzuki@apple.com
Message:

REGRESSION(r269017): Speedometer2 1% regression
https://bugs.webkit.org/show_bug.cgi?id=221640

Reviewed by Mark Lam.

Reverting r269017, r269478, and r272095 because of Speedometer2 ~1% regression.

  • wtf/HashTable.h:

(WTF::KeyTraits>::inlineLookup):
(WTF::KeyTraits>::lookupForWriting):
(WTF::KeyTraits>::fullLookupForWriting):
(WTF::KeyTraits>::addUniqueForInitialization):
(WTF::KeyTraits>::add):

  • wtf/HashTraits.h:
  • wtf/MetaAllocator.cpp:

(WTF::MetaAllocator::addFreeSpace):

  • wtf/MetaAllocator.h:
Location:
trunk/Source/WTF
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WTF/ChangeLog

    r272611 r272621  
     12021-02-09  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        REGRESSION(r269017): Speedometer2 1% regression
     4        https://bugs.webkit.org/show_bug.cgi?id=221640
     5
     6        Reviewed by Mark Lam.
     7
     8        Reverting r269017, r269478, and r272095 because of Speedometer2 ~1% regression.
     9
     10        * wtf/HashTable.h:
     11        (WTF::KeyTraits>::inlineLookup):
     12        (WTF::KeyTraits>::lookupForWriting):
     13        (WTF::KeyTraits>::fullLookupForWriting):
     14        (WTF::KeyTraits>::addUniqueForInitialization):
     15        (WTF::KeyTraits>::add):
     16        * wtf/HashTraits.h:
     17        * wtf/MetaAllocator.cpp:
     18        (WTF::MetaAllocator::addFreeSpace):
     19        * wtf/MetaAllocator.h:
     20
    1212021-02-09  Eric Carlson  <eric.carlson@apple.com>
    222
  • trunk/Source/WTF/wtf/HashTable.h

    r272095 r272621  
    6060#endif
    6161
    62 #define HASH_TABLE_RELEASE_ASSERT(condition) if (UNLIKELY(!(condition))) CRASH();
    63 
    6462#if DUMP_HASHTABLE_STATS
    6563
     
    678676        unsigned h = HashTranslator::hash(key);
    679677        unsigned i = h & sizeMask;
    680         unsigned initialIndex = i;
    681678
    682679#if DUMP_HASHTABLE_STATS
     
    718715                k = 1 | doubleHash(h);
    719716            i = (i + k) & sizeMask;
    720             if constexpr (KeyTraits::assertNotFull)
    721                 HASH_TABLE_RELEASE_ASSERT(i != initialIndex);
    722717        }
    723718    }
     
    735730        unsigned h = HashTranslator::hash(key);
    736731        unsigned i = h & sizeMask;
    737         unsigned initialIndex = i;
    738732
    739733#if DUMP_HASHTABLE_STATS
     
    782776                k = 1 | doubleHash(h);
    783777            i = (i + k) & sizeMask;
    784             if constexpr (KeyTraits::assertNotFull)
    785                 HASH_TABLE_RELEASE_ASSERT(i != initialIndex);
    786778        }
    787779    }
     
    799791        unsigned h = HashTranslator::hash(key);
    800792        unsigned i = h & sizeMask;
    801         unsigned initialIndex = i;
    802793
    803794#if DUMP_HASHTABLE_STATS
     
    846837                k = 1 | doubleHash(h);
    847838            i = (i + k) & sizeMask;
    848             if constexpr (KeyTraits::assertNotFull)
    849                 HASH_TABLE_RELEASE_ASSERT(i != initialIndex);
    850839        }
    851840    }
     
    868857        unsigned h = HashTranslator::hash(key);
    869858        unsigned i = h & sizeMask;
    870         unsigned initialIndex = i;
    871859
    872860#if DUMP_HASHTABLE_STATS
     
    898886                k = 1 | doubleHash(h);
    899887            i = (i + k) & sizeMask;
    900             if constexpr (KeyTraits::assertNotFull)
    901                 HASH_TABLE_RELEASE_ASSERT(i != initialIndex);
    902888        }
    903889
     
    952938        unsigned h = HashTranslator::hash(key);
    953939        unsigned i = h & sizeMask;
    954         unsigned initialIndex = i;
    955940
    956941#if DUMP_HASHTABLE_STATS
     
    999984                k = 1 | doubleHash(h);
    1000985            i = (i + k) & sizeMask;
    1001             if constexpr (KeyTraits::assertNotFull)
    1002                 HASH_TABLE_RELEASE_ASSERT(i != initialIndex);
    1003986        }
    1004987
     
    16591642    }
    16601643
    1661 #undef HASH_TABLE_RELEASE_ASSERT
    1662 
    16631644} // namespace WTF
    16641645
  • trunk/Source/WTF/wtf/HashTraits.h

    r272095 r272621  
    5252    // a hash table will have at least N entries.
    5353    static constexpr unsigned minimumTableSize = 8;
    54 
    55     // Whenever traversing the hash table, assert it is not full
    56     static constexpr bool assertNotFull = false;
    5754};
    5855
     
    384381};
    385382
    386 template<typename Traits>
    387 struct HardenedHashTraits : public Traits {
    388     static constexpr bool assertNotFull = true;
    389 };
    390 
    391383// Useful for classes that want complete control over what is empty and what is deleted,
    392384// and how to construct both.
  • trunk/Source/WTF/wtf/MetaAllocator.cpp

    r272095 r272621  
    308308    FreeSpacePtr end = start + sizeInBytes;
    309309
    310     auto leftNeighbor = m_freeSpaceEndAddressMap.find(start);
    311     auto rightNeighbor = m_freeSpaceStartAddressMap.find(end);
     310    HashMap<FreeSpacePtr, FreeSpaceNode*>::iterator leftNeighbor = m_freeSpaceEndAddressMap.find(start);
     311    HashMap<FreeSpacePtr, FreeSpaceNode*>::iterator rightNeighbor = m_freeSpaceStartAddressMap.find(end);
    312312
    313313    if (leftNeighbor != m_freeSpaceEndAddressMap.end()) {
  • trunk/Source/WTF/wtf/MetaAllocator.h

    r272095 r272621  
    194194   
    195195    Tree m_freeSpaceSizeMap;
    196     HashMap<FreeSpacePtr, FreeSpaceNode*, DefaultHash<FreeSpacePtr>, HardenedHashTraits<HashTraits<FreeSpacePtr>>> m_freeSpaceStartAddressMap;
    197     HashMap<FreeSpacePtr, FreeSpaceNode*, DefaultHash<FreeSpacePtr>, HardenedHashTraits<HashTraits<FreeSpacePtr>>> m_freeSpaceEndAddressMap;
     196    HashMap<FreeSpacePtr, FreeSpaceNode*> m_freeSpaceStartAddressMap;
     197    HashMap<FreeSpacePtr, FreeSpaceNode*> m_freeSpaceEndAddressMap;
    198198    HashMap<uintptr_t, size_t> m_pageOccupancyMap;
    199199   
Note: See TracChangeset for help on using the changeset viewer.