summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2021-03-19 16:57:42 +0300
committerDmitry Stogov <dmitry@zend.com>2021-03-19 16:57:42 +0300
commit89c61186fffa5caa9554154fdbe13c5ede43d85a (patch)
tree64fadf96e2dd32c05d04e16e67e1162c4b184f02 /Zend
parent7279a661395b73e6c32e56c9b95fb5b048725f55 (diff)
downloadphp-git-89c61186fffa5caa9554154fdbe13c5ede43d85a.tar.gz
micro-optimization
Diffstat (limited to 'Zend')
-rw-r--r--Zend/zend_hash.c28
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;