Replace unused generic zend_hash_*add_or_update() functions by compact implmentations.

This commit is contained in:
Dmitry Stogov 2018-05-29 01:38:27 +03:00
parent f4b7239cae
commit 37069d7d2f
3 changed files with 64 additions and 15 deletions

View 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) 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) 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_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); if (flag == HASH_ADD) {
return _zend_hash_str_add(ht, str, len, pData ZEND_FILE_LINE_RELAY_CC);
return _zend_hash_str_add_or_update_i(ht, str, len, h, pData, flag 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) 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) 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) ZEND_API zval* ZEND_FASTCALL _zend_hash_index_add(HashTable *ht, zend_ulong h, zval *pData ZEND_FILE_LINE_DC)

View file

@ -89,23 +89,45 @@ ZEND_API void zend_ts_hash_clean(TsHashTable *ht)
end_write(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; zval *retval;
begin_write(ht); 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); end_write(ht);
return retval; 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; zval *retval;
begin_write(ht); 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); end_write(ht);
return retval; return retval;

View file

@ -48,17 +48,15 @@ ZEND_API void zend_ts_hash_clean(TsHashTable *ht);
/* additions/updates/changes */ /* 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) \ #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) \ #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) \ #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) \ #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); ZEND_API zval* zend_ts_hash_add_empty_element(TsHashTable *ht, zend_string *key);