]> granicus.if.org Git - php/commitdiff
Use cheaper API
authorXinchen Hui <laruence@gmail.com>
Mon, 18 Dec 2017 03:55:14 +0000 (11:55 +0800)
committerXinchen Hui <laruence@gmail.com>
Mon, 18 Dec 2017 03:55:14 +0000 (11:55 +0800)
Zend/zend_hash.h
Zend/zend_object_handlers.c
ext/reflection/php_reflection.c
main/php_variables.c
main/streams/streams.c

index 6a37e8a82b1b52c8167006450dfb881169299610..c27f08bd721d5056313620e4abd476feb5a3e748 100644 (file)
@@ -807,6 +807,19 @@ static zend_always_inline void *zend_hash_find_ptr(const HashTable *ht, zend_str
        }
 }
 
+static zend_always_inline void *zend_hash_find_ex_ptr(const HashTable *ht, zend_string *key, zend_bool known_hash)
+{
+       zval *zv;
+
+       zv = zend_hash_find_ex(ht, key, known_hash);
+       if (zv) {
+               ZEND_ASSUME(Z_PTR_P(zv));
+               return Z_PTR_P(zv);
+       } else {
+               return NULL;
+       }
+}
+
 static zend_always_inline void *zend_hash_str_find_ptr(const HashTable *ht, const char *str, size_t len)
 {
        zval *zv;
index 4b2e4bc94222f5b8263b91e6c20603ac4d4b4496..51ec12352f5185690195edf1fcaff056732ed941 100644 (file)
@@ -1729,7 +1729,7 @@ int zend_std_get_closure(zval *obj, zend_class_entry **ce_ptr, zend_function **f
 
        ce = Z_OBJCE_P(obj);
 
-       if ((func = zend_hash_find(&ce->function_table, ZSTR_KNOWN(ZEND_STR_MAGIC_INVOKE))) == NULL) {
+       if ((func = zend_hash_find_ex(&ce->function_table, ZSTR_KNOWN(ZEND_STR_MAGIC_INVOKE), 1)) == NULL) {
                return FAILURE;
        }
        *fptr_ptr = Z_FUNC_P(func);
index 9fd69fa85fad195ef0a7ae08076c29ad59eddcc5..4444c6ef7bb6c66a41f0f1125712eee95531e884 100644 (file)
@@ -165,7 +165,7 @@ static zend_object_handlers reflection_object_handlers;
 
 static zval *_default_load_name(zval *object) /* {{{ */
 {
-       return zend_hash_find_ind(Z_OBJPROP_P(object), ZSTR_KNOWN(ZEND_STR_NAME));
+       return zend_hash_find_ex_ind(Z_OBJPROP_P(object), ZSTR_KNOWN(ZEND_STR_NAME), 1);
 }
 /* }}} */
 
index c22859f9575449aee7177216ccbd452a5b8ab0c6..e8f4abbd71db87d490e9b75c8fcc46fc70a56eba 100644 (file)
@@ -817,8 +817,8 @@ static zend_bool php_auto_globals_create_server(zend_string *name)
                        if (SG(request_info).argc) {
                                zval *argc, *argv;
 
-                               if ((argc = zend_hash_find_ind(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_ARGC))) != NULL &&
-                                       (argv = zend_hash_find_ind(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_ARGV))) != NULL) {
+                               if ((argc = zend_hash_find_ex_ind(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_ARGC), 1)) != NULL &&
+                                       (argv = zend_hash_find_ex_ind(&EG(symbol_table), ZSTR_KNOWN(ZEND_STR_ARGV), 1)) != NULL) {
                                        Z_ADDREF_P(argv);
                                        zend_hash_update(Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]), ZSTR_KNOWN(ZEND_STR_ARGV), argv);
                                        zend_hash_update(Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]), ZSTR_KNOWN(ZEND_STR_ARGC), argc);
index 045e30573a087257f4aa89744135eae2f8c3e4b0..4df6c60e0b6e8dcc393a9fbd1222fb9fc6770708 100644 (file)
@@ -1814,7 +1814,7 @@ PHPAPI php_stream_wrapper *php_stream_locate_url_wrapper(const char *path, const
                        }
 
                        /* Check again, the original check might have not known the protocol name */
-                       if ((wrapper = zend_hash_find_ptr(wrapper_hash, ZSTR_KNOWN(ZEND_STR_FILE))) != NULL) {
+                       if ((wrapper = zend_hash_find_ex_ptr(wrapper_hash, ZSTR_KNOWN(ZEND_STR_FILE), 1)) != NULL) {
                                return wrapper;
                        }