Ignore:
Timestamp:
Oct 25, 2007, 11:55:36 PM (18 years ago)
Author:
ggaren
Message:

Reviewed by Maciej Stachowiak.


Tweaked the inner hashtable lookup loop to remove a branch in the "not
found" case. .5% speedup on SunSpider.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • wtf/HashTable.h: (WTF::::lookup):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/wtf/HashTable.h

    r26688 r27093  
    397397#endif
    398398
    399         ValueType *table = m_table;
    400         ValueType *entry;
    401         ValueType *deletedEntry = 0;
    402         while (!isEmptyBucket(*(entry = table + i))) {
     399        ValueType* table = m_table;
     400        ValueType* deletedEntry = 0;
     401
     402        while (1) {
     403            ValueType* entry = table + i;
     404
     405            if (isEmptyBucket(*entry))
     406                return makeLookupResult(deletedEntry ? deletedEntry : entry, false, h);
     407           
    403408            if (isDeletedBucket(*entry))
    404409                deletedEntry = entry;
    405410            else if (HashTranslator::equal(Extractor::extract(*entry), key))
    406411                return makeLookupResult(entry, true, h);
     412
    407413#if DUMP_HASHTABLE_STATS
    408414            ++probeCount;
     
    413419            i = (i + k) & sizeMask;
    414420        }
    415 
    416         return makeLookupResult(deletedEntry ? deletedEntry : entry, false, h);
    417     }
    418 
     421    }
    419422
    420423    template<typename Key, typename Value, typename Extractor, typename HashFunctions, typename Traits, typename KeyTraits>
Note: See TracChangeset for help on using the changeset viewer.