com php-src: zend_hash_resize seems useless, use zend_hash_extend: Zend/zend_hash.c Zend/zend_ha sh.h ext/standard/var_unserializer.c
ext/standard/var _unserializer.re
| From: | Xinchen Hui | Date: | Thu, 13 Aug 2015 04:19:35 +0000 |
| Subject: | com php-src: zend_hash_resize seems useless, use zend_hash_extend: Zend/zend_hash.c Zend/zend_ha sh.h ext/standard/var_unserializer.c ext/standard/var _unserializer.re |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-88503@lists.php.net to get a copy of this message | ||
Commit: adf0e499121df263c65aa84e1c75a61dd51f0cf3
Author: Xinchen Hui <laruence@php.net> Thu, 13 Aug 2015 12:19:35 +0800
Parents: a089ce0cc6e0bade9bf94399a13bbd63448874b0
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=adf0e499121df263c65aa84e1c75a61dd51f0cf3
Log:
zend_hash_resize seems useless, use zend_hash_extend
Changed paths:
M Zend/zend_hash.c
M Zend/zend_hash.h
M ext/standard/var_unserializer.c
M ext/standard/var_unserializer.re
Diff:
diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c
index 7e06cf0..89a5995 100644
--- a/Zend/zend_hash.c
+++ b/Zend/zend_hash.c
@@ -250,13 +250,14 @@ ZEND_API void ZEND_FASTCALL zend_hash_extend(HashTable *ht, uint32_t nSize,
zend
} else {
ZEND_ASSERT(!(ht->u.flags & HASH_FLAG_PACKED));
if (nSize > ht->nTableSize) {
- void *old_data = HT_GET_DATA_ADDR(ht);
+ void *new_data, *old_data = HT_GET_DATA_ADDR(ht);
Bucket *old_buckets = ht->arData;
-
+ nSize = zend_hash_check_size(nSize);
HANDLE_BLOCK_INTERRUPTIONS();
- ht->nTableSize = zend_hash_check_size(nSize);
+ new_data = pemalloc(HT_DATA_SIZE_EX(nSize) + HT_HASH_SIZE_EX(-nSize), ht->u.flags &
HASH_FLAG_PERSISTENT);
+ ht->nTableSize = nSize;
ht->nTableMask = -ht->nTableSize;
- HT_SET_DATA_ADDR(ht, pemalloc(HT_SIZE(ht), ht->u.flags & HASH_FLAG_PERSISTENT));
+ HT_SET_DATA_ADDR(ht, new_data);
memcpy(ht->arData, old_buckets, sizeof(Bucket) * ht->nNumUsed);
pefree(old_data, ht->u.flags & HASH_FLAG_PERSISTENT);
zend_hash_rehash(ht);
@@ -813,26 +814,6 @@ static void ZEND_FASTCALL zend_hash_do_resize(HashTable *ht)
}
}
-ZEND_API void ZEND_FASTCALL zend_hash_resize(HashTable *ht, uint32_t nSize) {
- nSize = zend_hash_check_size(nSize);
- if (ht->u.flags & HASH_FLAG_INITIALIZED) {
- void *new_data, *old_data = HT_GET_DATA_ADDR(ht);
- Bucket *old_buckets = ht->arData;
-
- HANDLE_BLOCK_INTERRUPTIONS();
- new_data = pemalloc(HT_DATA_SIZE_EX(nSize) + HT_HASH_SIZE_EX(-nSize), ht->u.flags &
HASH_FLAG_PERSISTENT);
- ht->nTableSize = nSize;
- ht->nTableMask = -ht->nTableSize;
- HT_SET_DATA_ADDR(ht, new_data);
- memcpy(ht->arData, old_buckets, sizeof(Bucket) * ht->nNumUsed);
- pefree(old_data, ht->u.flags & HASH_FLAG_PERSISTENT);
- zend_hash_rehash(ht);
- HANDLE_UNBLOCK_INTERRUPTIONS();
- } else {
- ht->nTableSize = nSize;
- }
-}
-
ZEND_API int ZEND_FASTCALL zend_hash_rehash(HashTable *ht)
{
Bucket *p;
diff --git a/Zend/zend_hash.h b/Zend/zend_hash.h
index ae7baa5..4a33b95 100644
--- a/Zend/zend_hash.h
+++ b/Zend/zend_hash.h
@@ -212,7 +212,6 @@ ZEND_API zval* ZEND_FASTCALL zend_hash_minmax(const HashTable *ht, compare_func_
#define zend_hash_next_free_element(ht) \
(ht)->nNextFreeElement
-ZEND_API void ZEND_FASTCALL zend_hash_resize(HashTable *ht, uint32_t nSize);
ZEND_API int ZEND_FASTCALL zend_hash_rehash(HashTable *ht);
ZEND_API HashTable* ZEND_FASTCALL zend_array_dup(HashTable *source);
diff --git a/ext/standard/var_unserializer.c b/ext/standard/var_unserializer.c
index 3f7bf1c..046db56 100644
--- a/ext/standard/var_unserializer.c
+++ b/ext/standard/var_unserializer.c
@@ -477,7 +477,7 @@ static inline int object_common2(UNSERIALIZE_PARAMETER, zend_long elements)
}
ht = Z_OBJPROP_P(rval);
- zend_hash_resize(ht, zend_hash_num_elements(ht) + elements);
+ zend_hash_extend(ht, zend_hash_num_elements(ht) + elements, (ht->u..flags &
HASH_FLAG_PACKED));
if (!process_nested_data(UNSERIALIZE_PASSTHRU, ht, elements, 1)) {
return 0;
}
diff --git a/ext/standard/var_unserializer.re b/ext/standard/var_unserializer.re
index 25c519e..be6a12f 100644
--- a/ext/standard/var_unserializer.re
+++ b/ext/standard/var_unserializer.re
@@ -481,7 +481,7 @@ static inline int object_common2(UNSERIALIZE_PARAMETER, zend_long elements)
}
ht = Z_OBJPROP_P(rval);
- zend_hash_resize(ht, zend_hash_num_elements(ht) + elements);
+ zend_hash_extend(ht, zend_hash_num_elements(ht) + elements, (ht->u.flags &
HASH_FLAG_PACKED));
if (!process_nested_data(UNSERIALIZE_PASSTHRU, ht, elements, 1)) {
return 0;
}