From: Dmitry Stogov Date: Wed, 19 Sep 2018 10:55:53 +0000 (+0300) Subject: Turn zend_hash_exists() into inline function X-Git-Tag: php-7.4.0alpha1~1858 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=27b0fecd2e0192290d6530ea1ee2f5cd23e43682;p=php Turn zend_hash_exists() into inline function --- diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index 3022352e4b..c68d1ff16c 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -2178,28 +2178,6 @@ ZEND_API zval* ZEND_FASTCALL zend_hash_str_find(const HashTable *ht, const char return p ? &p->val : NULL; } -ZEND_API zend_bool ZEND_FASTCALL zend_hash_exists(const HashTable *ht, zend_string *key) -{ - Bucket *p; - - IS_CONSISTENT(ht); - - p = zend_hash_find_bucket(ht, key, 0); - return p ? 1 : 0; -} - -ZEND_API zend_bool ZEND_FASTCALL zend_hash_str_exists(const HashTable *ht, const char *str, size_t len) -{ - zend_ulong h; - Bucket *p; - - IS_CONSISTENT(ht); - - h = zend_inline_hash_func(str, len); - p = zend_hash_str_find_bucket(ht, str, len, h); - return p ? 1 : 0; -} - ZEND_API zval* ZEND_FASTCALL zend_hash_index_find(const HashTable *ht, zend_ulong h) { Bucket *p; @@ -2230,26 +2208,6 @@ ZEND_API zval* ZEND_FASTCALL _zend_hash_index_find(const HashTable *ht, zend_ulo return p ? &p->val : NULL; } -ZEND_API zend_bool ZEND_FASTCALL zend_hash_index_exists(const HashTable *ht, zend_ulong h) -{ - Bucket *p; - - IS_CONSISTENT(ht); - - if (HT_FLAGS(ht) & HASH_FLAG_PACKED) { - if (h < ht->nNumUsed) { - if (Z_TYPE(ht->arData[h].val) != IS_UNDEF) { - return 1; - } - } - return 0; - } - - p = zend_hash_index_find_bucket(ht, h); - return p ? 1 : 0; -} - - ZEND_API void ZEND_FASTCALL zend_hash_internal_pointer_reset_ex(HashTable *ht, HashPosition *pos) { IS_CONSISTENT(ht); diff --git a/Zend/zend_hash.h b/Zend/zend_hash.h index 7f53003ae8..1ef4e974ab 100644 --- a/Zend/zend_hash.h +++ b/Zend/zend_hash.h @@ -199,9 +199,20 @@ static zend_always_inline zval *zend_hash_find_ex(const HashTable *ht, zend_stri /* Misc */ -ZEND_API zend_bool ZEND_FASTCALL zend_hash_exists(const HashTable *ht, zend_string *key); -ZEND_API zend_bool ZEND_FASTCALL zend_hash_str_exists(const HashTable *ht, const char *str, size_t len); -ZEND_API zend_bool ZEND_FASTCALL zend_hash_index_exists(const HashTable *ht, zend_ulong h); +static zend_always_inline zend_bool zend_hash_exists(const HashTable *ht, zend_string *key) +{ + return zend_hash_find(ht, key) != NULL; +} + +static zend_always_inline zend_bool zend_hash_str_exists(const HashTable *ht, const char *str, size_t len) +{ + return zend_hash_str_find(ht, str, len) != NULL; +} + +static zend_always_inline zend_bool zend_hash_index_exists(const HashTable *ht, zend_ulong h) +{ + return zend_hash_index_find(ht, h) != NULL; +} /* traversing */ ZEND_API HashPosition ZEND_FASTCALL zend_hash_get_current_pos(const HashTable *ht); diff --git a/Zend/zend_ts_hash.c b/Zend/zend_ts_hash.c index 9ed1306479..e58746a130 100644 --- a/Zend/zend_ts_hash.c +++ b/Zend/zend_ts_hash.c @@ -230,28 +230,6 @@ ZEND_API zval *zend_ts_hash_index_find(TsHashTable *ht, zend_ulong h) return retval; } -ZEND_API int zend_ts_hash_exists(TsHashTable *ht, zend_string *key) -{ - int retval; - - begin_read(ht); - retval = zend_hash_exists(TS_HASH(ht), key); - end_read(ht); - - return retval; -} - -ZEND_API int zend_ts_hash_index_exists(TsHashTable *ht, zend_ulong h) -{ - int retval; - - begin_read(ht); - retval = zend_hash_index_exists(TS_HASH(ht), h); - end_read(ht); - - return retval; -} - ZEND_API void zend_ts_hash_copy(TsHashTable *target, TsHashTable *source, copy_ctor_func_t pCopyConstructor) { begin_read(source); diff --git a/Zend/zend_ts_hash.h b/Zend/zend_ts_hash.h index 91840f203f..c05f073e60 100644 --- a/Zend/zend_ts_hash.h +++ b/Zend/zend_ts_hash.h @@ -68,10 +68,6 @@ ZEND_API int zend_ts_hash_index_del(TsHashTable *ht, zend_ulong h); ZEND_API zval *zend_ts_hash_find(TsHashTable *ht, zend_string *key); ZEND_API zval *zend_ts_hash_index_find(TsHashTable *ht, zend_ulong); -/* Misc */ -ZEND_API int zend_ts_hash_exists(TsHashTable *ht, zend_string *key); -ZEND_API int zend_ts_hash_index_exists(TsHashTable *ht, zend_ulong h); - /* Copying, merging and sorting */ ZEND_API void zend_ts_hash_copy(TsHashTable *target, TsHashTable *source, copy_ctor_func_t pCopyConstructor); ZEND_API void zend_ts_hash_copy_to_hash(HashTable *target, TsHashTable *source, copy_ctor_func_t pCopyConstructor); @@ -121,6 +117,16 @@ static zend_always_inline void *zend_ts_hash_str_add_ptr(TsHashTable *ht, const return zv ? Z_PTR_P(zv) : NULL; } +static zend_always_inline int zend_ts_hash_exists(TsHashTable *ht, zend_string *key) +{ + return zend_ts_hash_find(ht, key) != NULL; +} + +static zend_always_inline int zend_ts_hash_index_exists(TsHashTable *ht, zend_ulong h) +{ + return zend_ts_hash_index_find(ht, h) != NULL; +} + END_EXTERN_C() #define ZEND_TS_INIT_SYMTABLE(ht) \