]> granicus.if.org Git - php/commitdiff
Replace unused generic zend_hash_*add_or_update() functions by compact implmentations.
authorDmitry Stogov <dmitry@zend.com>
Mon, 28 May 2018 22:38:27 +0000 (01:38 +0300)
committerDmitry Stogov <dmitry@zend.com>
Mon, 28 May 2018 22:38:27 +0000 (01:38 +0300)
Zend/zend_hash.c
Zend/zend_ts_hash.c
Zend/zend_ts_hash.h

index 6ffd25f1d3009ad192496abd69b1ef85c29bcfb8..b97cfb2ba43bcfbab3424bdf391f68d13191aa08 100644 (file)
@@ -777,7 +777,16 @@ add_to_hash:
 
 ZEND_API zval* ZEND_FASTCALL _zend_hash_add_or_update(HashTable *ht, zend_string *key, zval *pData, uint32_t flag ZEND_FILE_LINE_DC)
 {
-       return _zend_hash_add_or_update_i(ht, key, pData, flag ZEND_FILE_LINE_RELAY_CC);
+       if (flag == HASH_ADD) {
+               return _zend_hash_add(ht, key, pData ZEND_FILE_LINE_RELAY_CC);
+       } else if (flag == HASH_ADD_NEW) {
+               return _zend_hash_add_new(ht, key, pData ZEND_FILE_LINE_RELAY_CC);
+       } else if (flag == HASH_UPDATE) {
+               return _zend_hash_update(ht, key, pData ZEND_FILE_LINE_RELAY_CC);
+       } else {
+               ZEND_ASSERT(flag == (HASH_UPDATE|HASH_UPDATE_INDIRECT));
+               return _zend_hash_update_ind(ht, key, pData ZEND_FILE_LINE_RELAY_CC);
+       }
 }
 
 ZEND_API zval* ZEND_FASTCALL _zend_hash_add(HashTable *ht, zend_string *key, zval *pData ZEND_FILE_LINE_DC)
@@ -802,9 +811,16 @@ ZEND_API zval* ZEND_FASTCALL _zend_hash_add_new(HashTable *ht, zend_string *key,
 
 ZEND_API zval* ZEND_FASTCALL _zend_hash_str_add_or_update(HashTable *ht, const char *str, size_t len, zval *pData, uint32_t flag ZEND_FILE_LINE_DC)
 {
-       zend_ulong h = zend_hash_func(str, len);
-
-       return _zend_hash_str_add_or_update_i(ht, str, len, h, pData, flag ZEND_FILE_LINE_RELAY_CC);
+       if (flag == HASH_ADD) {
+               return _zend_hash_str_add(ht, str, len, pData ZEND_FILE_LINE_RELAY_CC);
+       } else if (flag == HASH_ADD_NEW) {
+               return _zend_hash_str_add_new(ht, str, len, pData ZEND_FILE_LINE_RELAY_CC);
+       } else if (flag == HASH_UPDATE) {
+               return _zend_hash_str_update(ht, str, len, pData ZEND_FILE_LINE_RELAY_CC);
+       } else {
+               ZEND_ASSERT(flag == (HASH_UPDATE|HASH_UPDATE_INDIRECT));
+               return _zend_hash_str_update_ind(ht, str, len, pData ZEND_FILE_LINE_RELAY_CC);
+       }
 }
 
 ZEND_API zval* ZEND_FASTCALL _zend_hash_str_update(HashTable *ht, const char *str, size_t len, zval *pData ZEND_FILE_LINE_DC)
@@ -945,7 +961,20 @@ add:
 
 ZEND_API zval* ZEND_FASTCALL _zend_hash_index_add_or_update(HashTable *ht, zend_ulong h, zval *pData, uint32_t flag ZEND_FILE_LINE_DC)
 {
-       return _zend_hash_index_add_or_update_i(ht, h, pData, flag ZEND_FILE_LINE_RELAY_CC);
+       if (flag == HASH_ADD) {
+               return _zend_hash_index_add(ht, h, pData ZEND_FILE_LINE_RELAY_CC);
+       } else if (flag == (HASH_ADD|HASH_ADD_NEW)) {
+               return _zend_hash_index_add_new(ht, h, pData ZEND_FILE_LINE_RELAY_CC);
+       } else if (flag == (HASH_ADD|HASH_ADD_NEXT)) {
+               ZEND_ASSERT(h == ht->nNextFreeElement);
+               return _zend_hash_next_index_insert(ht, pData ZEND_FILE_LINE_RELAY_CC);
+       } else if (flag == (HASH_ADD|HASH_ADD_NEW|HASH_ADD_NEXT)) {
+               ZEND_ASSERT(h == ht->nNextFreeElement);
+               return _zend_hash_next_index_insert_new(ht, pData ZEND_FILE_LINE_RELAY_CC);
+       } else {
+               ZEND_ASSERT(flag == HASH_UPDATE);
+               return _zend_hash_index_update(ht, h, pData ZEND_FILE_LINE_RELAY_CC);
+       }
 }
 
 ZEND_API zval* ZEND_FASTCALL _zend_hash_index_add(HashTable *ht, zend_ulong h, zval *pData ZEND_FILE_LINE_DC)
index af02af55e853c428b1d08c1ece1e2cc6a82a17ec..f5d210b724b6803d3675ac2ad06ac5c34c747c94 100644 (file)
@@ -89,23 +89,45 @@ ZEND_API void zend_ts_hash_clean(TsHashTable *ht)
        end_write(ht);
 }
 
-ZEND_API zval *_zend_ts_hash_add_or_update(TsHashTable *ht, zend_string *key, zval *pData, int flag ZEND_FILE_LINE_DC)
+ZEND_API zval *_zend_ts_hash_add(TsHashTable *ht, zend_string *key, zval *pData ZEND_FILE_LINE_DC)
 {
        zval *retval;
 
        begin_write(ht);
-       retval = _zend_hash_add_or_update(TS_HASH(ht), key, pData, flag ZEND_FILE_LINE_RELAY_CC);
+       retval = _zend_hash_add(TS_HASH(ht), key, pData ZEND_FILE_LINE_RELAY_CC);
        end_write(ht);
 
        return retval;
 }
 
-ZEND_API zval *_zend_ts_hash_index_add_or_update(TsHashTable *ht, zend_ulong h, zval *pData, int flag ZEND_FILE_LINE_DC)
+ZEND_API zval *_zend_ts_hash_update(TsHashTable *ht, zend_string *key, zval *pData ZEND_FILE_LINE_DC)
 {
        zval *retval;
 
        begin_write(ht);
-       retval = _zend_hash_index_add_or_update(TS_HASH(ht), h, pData, flag ZEND_FILE_LINE_RELAY_CC);
+       retval = _zend_hash_update(TS_HASH(ht), key, pData ZEND_FILE_LINE_RELAY_CC);
+       end_write(ht);
+
+       return retval;
+}
+
+ZEND_API zval *_zend_ts_hash_next_index_insert(TsHashTable *ht, zval *pData ZEND_FILE_LINE_DC)
+{
+       zval *retval;
+
+       begin_write(ht);
+       retval = _zend_hash_next_index_insert(TS_HASH(ht), pData ZEND_FILE_LINE_RELAY_CC);
+       end_write(ht);
+
+       return retval;
+}
+
+ZEND_API zval *_zend_ts_hash_index_update(TsHashTable *ht, zend_ulong h, zval *pData ZEND_FILE_LINE_DC)
+{
+       zval *retval;
+
+       begin_write(ht);
+       retval = _zend_hash_index_update(TS_HASH(ht), h, pData ZEND_FILE_LINE_RELAY_CC);
        end_write(ht);
 
        return retval;
index 9806c39ed85c21bfc4f5fd7f6bff80f77d249afd..ef882e08202976e561423f26a6667d1ee24f38eb 100644 (file)
@@ -48,17 +48,15 @@ ZEND_API void zend_ts_hash_clean(TsHashTable *ht);
 
 
 /* additions/updates/changes */
-ZEND_API zval *_zend_ts_hash_add_or_update(TsHashTable *ht, zend_string *key, zval *pData, int flag ZEND_FILE_LINE_DC);
 #define zend_ts_hash_update(ht, key, pData) \
-               _zend_ts_hash_add_or_update(ht, key, pData, HASH_UPDATE ZEND_FILE_LINE_CC)
+               _zend_ts_hash_update(ht, key, pData ZEND_FILE_LINE_CC)
 #define zend_ts_hash_add(ht, key, pData) \
-               _zend_ts_hash_add_or_update(ht, key, pData, HASH_ADD ZEND_FILE_LINE_CC)
+               _zend_ts_hash_add(ht, key, pData ZEND_FILE_LINE_CC)
 
-ZEND_API zval *_zend_ts_hash_index_add_or_update(TsHashTable *ht, zend_ulong h, zval *pData, int flag ZEND_FILE_LINE_DC);
 #define zend_ts_hash_index_update(ht, h, pData) \
-               _zend_ts_hash_index_add_or_update(ht, h, pData, HASH_UPDATE ZEND_FILE_LINE_CC)
+               _zend_ts_hash_index_update(ht, h, pData ZEND_FILE_LINE_CC)
 #define zend_ts_hash_next_index_insert(ht, pData) \
-               _zend_ts_hash_index_add_or_update(ht, ht->nNextFreeElement, pData, HASH_ADD ZEND_FILE_LINE_CC)
+               _zend_ts_hash_next_index_insert(ht, ht->nNextFreeElement, pData ZEND_FILE_LINE_CC)
 
 ZEND_API zval* zend_ts_hash_add_empty_element(TsHashTable *ht, zend_string *key);