summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-09-19 13:55:53 +0300
committerDmitry Stogov <dmitry@zend.com>2018-09-19 13:55:53 +0300
commit27b0fecd2e0192290d6530ea1ee2f5cd23e43682 (patch)
tree408a78b17d0fbd61b1151b16d06fb46d6d2a14a0
parent6beaa9fa5b9764b411a178395ba26b237debf9fd (diff)
downloadphp-git-27b0fecd2e0192290d6530ea1ee2f5cd23e43682.tar.gz
Turn zend_hash_exists() into inline function
-rw-r--r--Zend/zend_hash.c42
-rw-r--r--Zend/zend_hash.h17
-rw-r--r--Zend/zend_ts_hash.c22
-rw-r--r--Zend/zend_ts_hash.h14
4 files changed, 24 insertions, 71 deletions
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) \