Kaynağa Gözat

structure: CHash: small optimization in Lookup()

ambrop7 13 yıl önce
ebeveyn
işleme
9923141a74
1 değiştirilmiş dosya ile 4 ekleme ve 3 silme
  1. 4 3
      structure/CHash_impl.h

+ 4 - 3
structure/CHash_impl.h

@@ -160,12 +160,13 @@ static CHashRef CHash_Lookup (const CHash *o, CHashArg arg, CHashKey key)
 {
 {
     size_t index = CHASH_PARAM_HASHFUN(arg, key) % o->numBuckets;
     size_t index = CHASH_PARAM_HASHFUN(arg, key) % o->numBuckets;
     
     
-    CHashRef e = CHash_Deref(arg, o->buckets[index]);
-    while (e.link != CHashNullLink()) {
+    CHashLink link = o->buckets[index];
+    while (link != CHashNullLink()) {
+        CHashRef e = CHash_Deref(arg, link);
         if (CHASH_PARAM_KEYSEQUAL(arg, CHASH_PARAM_GETKEY(arg, e), key)) {
         if (CHASH_PARAM_KEYSEQUAL(arg, CHASH_PARAM_GETKEY(arg, e), key)) {
             return e;
             return e;
         }
         }
-        e = CHash_Deref(arg, e.ptr->CHASH_PARAM_ENTRY_NEXT);
+        link = e.ptr->CHASH_PARAM_ENTRY_NEXT;
     }
     }
     
     
     return CHashNullRef();
     return CHashNullRef();