com php-src: optimized colision list traverse: Zend/zend_hash .c

From: Date: Tue, 16 Sep 2014 20:52:03 +0000
Subject: com php-src: optimized colision list traverse: Zend/zend_hash .c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-81702@lists.php.net to get a copy of this message
Commit: c2decc6afc594ef67bc8f21e0f8d79a8236b000e Author: Dmitry Stogov <dmitry@zend.com> Wed, 17 Sep 2014 00:52:03 +0400 Parents: 7ba43ea05241ad474d40ab199c6a710e21048cd5 Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=c2decc6afc594ef67bc8f21e0f8d79a8236b000e Log: optimized colision list traverse Changed paths: M Zend/zend_hash.c Diff: diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index ba18b9b..e603069 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -643,19 +643,18 @@ static zend_always_inline void _zend_hash_del_el_ex(HashTable *ht, uint32_t idx, static zend_always_inline void _zend_hash_del_el(HashTable *ht, uint32_t idx, Bucket *p) { - uint32_t nIndex; Bucket *prev = NULL; if (!(ht->u.flags & HASH_FLAG_PACKED)) { - nIndex = p->h & ht->nTableMask; - idx = ht->arHash[nIndex]; - if (p != ht->arData + idx) { - prev = ht->arData + idx; - while (ht->arData + Z_NEXT(prev->val) != p) { - idx = Z_NEXT(prev->val); - prev = ht->arData + idx; + uint32_t nIndex = p->h & ht->nTableMask; + uint32_t i = ht->arHash[nIndex]; + + if (i != idx) { + prev = ht->arData + i; + while (Z_NEXT(prev->val) != idx) { + i = Z_NEXT(prev->val); + prev = ht->arData + i; } - idx = Z_NEXT(prev->val); } }

« previous php.cvs (#81702) next »