]> granicus.if.org Git - php/commitdiff
Micro optimization
authorDmitry Stogov <dmitry@zend.com>
Wed, 21 Mar 2018 09:39:56 +0000 (12:39 +0300)
committerDmitry Stogov <dmitry@zend.com>
Wed, 21 Mar 2018 09:39:56 +0000 (12:39 +0300)
Zend/zend_hash.c

index 36b6ea912355ec7ee489fd46d2a6b1515a7e81f6..b209cbb70ee8e36ab9256de247498bead4059b8c 100644 (file)
@@ -1041,16 +1041,17 @@ static zend_always_inline void _zend_hash_del_el_ex(HashTable *ht, uint32_t idx,
                        HT_HASH(ht, p->h | ht->nTableMask) = Z_NEXT(p->val);
                }
        }
-       if (HT_IDX_TO_HASH(ht->nNumUsed - 1) == idx) {
+       idx = HT_HASH_TO_IDX(idx);
+       if (ht->nNumUsed - 1 == idx) {
                do {
                        ht->nNumUsed--;
                } while (ht->nNumUsed > 0 && (UNEXPECTED(Z_TYPE(ht->arData[ht->nNumUsed-1].val) == IS_UNDEF)));
        }
        ht->nNumOfElements--;
-       if (HT_IDX_TO_HASH(ht->nInternalPointer) == idx || UNEXPECTED(HT_HAS_ITERATORS(ht))) {
+       if (ht->nInternalPointer == idx || UNEXPECTED(HT_HAS_ITERATORS(ht))) {
                uint32_t new_idx;
 
-               new_idx = idx = HT_HASH_TO_IDX(idx);
+               new_idx = idx;
                while (1) {
                        new_idx++;
                        if (new_idx >= ht->nNumUsed) {