]> granicus.if.org Git - php/commitdiff
Turn zend_hash_exists() into inline function
authorDmitry Stogov <dmitry@zend.com>
Wed, 19 Sep 2018 10:55:53 +0000 (13:55 +0300)
committerDmitry Stogov <dmitry@zend.com>
Wed, 19 Sep 2018 10:55:53 +0000 (13:55 +0300)
Zend/zend_hash.c
Zend/zend_hash.h
Zend/zend_ts_hash.c
Zend/zend_ts_hash.h

index 3022352e4bd530cddc254541062ddc93971eaf00..c68d1ff16c27cab8d0d7f5cdd9b8fe8acf348c5e 100644 (file)
@@ -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);
index 7f53003ae8a3e687d54b9ec4f49d488198cb5436..1ef4e974ab65e4ac53d40356efa36b1bbee93b69 100644 (file)
@@ -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);
index 9ed130647911198b6d0031f8a6c882efb9514dc9..e58746a1304be82fbb68036e2c2901dee6bbab9d 100644 (file)
@@ -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);
index 91840f203f8d355797aa472016b75c3406a98a9a..c05f073e60e8fa17b44d57c56b8e9813c128edce 100644 (file)
@@ -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)                                                              \