Micro optimization

This commit is contained in:
Dmitry Stogov 2018-03-21 12:39:56 +03:00
parent 28ab2060ee
commit feb22b24cf

View 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); 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 { do {
ht->nNumUsed--; ht->nNumUsed--;
} while (ht->nNumUsed > 0 && (UNEXPECTED(Z_TYPE(ht->arData[ht->nNumUsed-1].val) == IS_UNDEF))); } while (ht->nNumUsed > 0 && (UNEXPECTED(Z_TYPE(ht->arData[ht->nNumUsed-1].val) == IS_UNDEF)));
} }
ht->nNumOfElements--; 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; uint32_t new_idx;
new_idx = idx = HT_HASH_TO_IDX(idx); new_idx = idx;
while (1) { while (1) {
new_idx++; new_idx++;
if (new_idx >= ht->nNumUsed) { if (new_idx >= ht->nNumUsed) {