diff options
author | Dmitry Stogov <dmitry@zend.com> | 2018-04-04 02:12:26 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2018-04-04 02:12:26 +0300 |
commit | 4df89a31b0cc6e4bdd76c8b7c4cf7d5676309d6e (patch) | |
tree | 45f555efaf3f8fd70df7c4a0cf95557011b1b23d /Zend/zend_hash.h | |
parent | cb464a53c8216dd76e14d21b74d6adecd5f002f8 (diff) | |
download | php-git-4df89a31b0cc6e4bdd76c8b7c4cf7d5676309d6e.tar.gz |
Eliminate useless checks
Diffstat (limited to 'Zend/zend_hash.h')
-rw-r--r-- | Zend/zend_hash.h | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/Zend/zend_hash.h b/Zend/zend_hash.h index e11d57b1ca..220bccbb76 100644 --- a/Zend/zend_hash.h +++ b/Zend/zend_hash.h @@ -1099,14 +1099,14 @@ static zend_always_inline void *zend_hash_get_current_data_ptr_ex(HashTable *ht, __fill_ht->nInternalPointer = 0; \ } while (0) -static zend_always_inline zval *_zend_hash_append(HashTable *ht, zend_string *key, zval *zv) +static zend_always_inline zval *_zend_hash_append_ex(HashTable *ht, zend_string *key, zval *zv, int interned) { uint32_t idx = ht->nNumUsed++; uint32_t nIndex; Bucket *p = ht->arData + idx; ZVAL_COPY_VALUE(&p->val, zv); - if (!ZSTR_IS_INTERNED(key)) { + if (!interned && !ZSTR_IS_INTERNED(key)) { HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS; zend_string_addref(key); zend_string_hash_val(key); @@ -1116,19 +1116,23 @@ static zend_always_inline zval *_zend_hash_append(HashTable *ht, zend_string *ke nIndex = (uint32_t)p->h | ht->nTableMask; Z_NEXT(p->val) = HT_HASH(ht, nIndex); HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx); - ht->nNumUsed = idx + 1; ht->nNumOfElements++; return &p->val; } -static zend_always_inline zval *_zend_hash_append_ptr(HashTable *ht, zend_string *key, void *ptr) +static zend_always_inline zval *_zend_hash_append(HashTable *ht, zend_string *key, zval *zv) +{ + return _zend_hash_append_ex(ht, key, zv, 0); +} + +static zend_always_inline zval *_zend_hash_append_ptr_ex(HashTable *ht, zend_string *key, void *ptr, int interned) { uint32_t idx = ht->nNumUsed++; uint32_t nIndex; Bucket *p = ht->arData + idx; ZVAL_PTR(&p->val, ptr); - if (!ZSTR_IS_INTERNED(key)) { + if (!interned && !ZSTR_IS_INTERNED(key)) { HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS; zend_string_addref(key); zend_string_hash_val(key); @@ -1138,11 +1142,15 @@ static zend_always_inline zval *_zend_hash_append_ptr(HashTable *ht, zend_string nIndex = (uint32_t)p->h | ht->nTableMask; Z_NEXT(p->val) = HT_HASH(ht, nIndex); HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx); - ht->nNumUsed = idx + 1; ht->nNumOfElements++; return &p->val; } +static zend_always_inline zval *_zend_hash_append_ptr(HashTable *ht, zend_string *key, void *ptr) +{ + return _zend_hash_append_ptr_ex(ht, key, ptr, 0); +} + static zend_always_inline void _zend_hash_append_ind(HashTable *ht, zend_string *key, zval *ptr) { uint32_t idx = ht->nNumUsed++; @@ -1160,7 +1168,6 @@ static zend_always_inline void _zend_hash_append_ind(HashTable *ht, zend_string nIndex = (uint32_t)p->h | ht->nTableMask; Z_NEXT(p->val) = HT_HASH(ht, nIndex); HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx); - ht->nNumUsed = idx + 1; ht->nNumOfElements++; } |