From: Dmitry Stogov Date: Wed, 21 Mar 2018 09:39:56 +0000 (+0300) Subject: Micro optimization X-Git-Tag: php-7.3.0alpha1~160 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=feb22b24cfb27f7bd7769f77d29937388a0a850c;p=php Micro optimization --- diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index 36b6ea9123..b209cbb70e 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -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) {