diff options
author | Dmitry Stogov <dmitry@zend.com> | 2021-03-19 16:57:42 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2021-03-19 16:57:42 +0300 |
commit | 89c61186fffa5caa9554154fdbe13c5ede43d85a (patch) | |
tree | 64fadf96e2dd32c05d04e16e67e1162c4b184f02 /Zend | |
parent | 7279a661395b73e6c32e56c9b95fb5b048725f55 (diff) | |
download | php-git-89c61186fffa5caa9554154fdbe13c5ede43d85a.tar.gz |
micro-optimization
Diffstat (limited to 'Zend')
-rw-r--r-- | Zend/zend_hash.c | 28 |
1 files changed, 9 insertions, 19 deletions
diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index 1f83a889e7..8d3c7640bf 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -730,25 +730,19 @@ static zend_always_inline zval *_zend_hash_add_or_update_i(HashTable *ht, zend_s IS_CONSISTENT(ht); HT_ASSERT_RC1(ht); + if (!ZSTR_IS_INTERNED(key)) { + zend_string_hash_val(key); + } + if (UNEXPECTED(HT_FLAGS(ht) & (HASH_FLAG_UNINITIALIZED|HASH_FLAG_PACKED))) { if (EXPECTED(HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED)) { zend_hash_real_init_mixed(ht); - if (!ZSTR_IS_INTERNED(key)) { - zend_string_addref(key); - HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS; - zend_string_hash_val(key); - } goto add_to_hash; } else { zend_hash_packed_to_hash(ht); - if (!ZSTR_IS_INTERNED(key)) { - zend_string_addref(key); - HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS; - zend_string_hash_val(key); - } } } else if ((flag & HASH_ADD_NEW) == 0 || ZEND_DEBUG) { - p = zend_hash_find_bucket(ht, key, 0); + p = zend_hash_find_bucket(ht, key, 1); if (p) { zval *data; @@ -781,19 +775,15 @@ static zend_always_inline zval *_zend_hash_add_or_update_i(HashTable *ht, zend_s ZVAL_COPY_VALUE(data, pData); return data; } - if (!ZSTR_IS_INTERNED(key)) { - zend_string_addref(key); - HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS; - } - } else if (!ZSTR_IS_INTERNED(key)) { - zend_string_addref(key); - HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS; - zend_string_hash_val(key); } ZEND_HASH_IF_FULL_DO_RESIZE(ht); /* If the Hash table is full, resize it */ add_to_hash: + if (!ZSTR_IS_INTERNED(key)) { + zend_string_addref(key); + HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS; + } idx = ht->nNumUsed++; ht->nNumOfElements++; arData = ht->arData; |