summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-04-04 01:12:59 +0300
committerDmitry Stogov <dmitry@zend.com>2018-04-04 01:12:59 +0300
commitcb464a53c8216dd76e14d21b74d6adecd5f002f8 (patch)
tree3f39ac2df569e2c63736066f0df3e53b7e0983b0
parent005f2a467637e134db023377e7f5390f939c8509 (diff)
downloadphp-git-cb464a53c8216dd76e14d21b74d6adecd5f002f8.tar.gz
Use "fastcall" calling convention
-rw-r--r--Zend/zend_string.c24
-rw-r--r--Zend/zend_string.h9
-rw-r--r--ext/opcache/ZendAccelerator.c10
-rw-r--r--ext/opcache/ZendAccelerator.h2
4 files changed, 23 insertions, 22 deletions
diff --git a/Zend/zend_string.c b/Zend/zend_string.c
index 0266d0c97a..f32397afa7 100644
--- a/Zend/zend_string.c
+++ b/Zend/zend_string.c
@@ -25,13 +25,13 @@
# include "valgrind/callgrind.h"
#endif
-ZEND_API zend_string *(*zend_new_interned_string)(zend_string *str);
-ZEND_API zend_string *(*zend_string_init_interned)(const char *str, size_t size, int permanent);
+ZEND_API zend_new_interned_string_func_t zend_new_interned_string;
+ZEND_API zend_string_init_interned_func_t zend_string_init_interned;
-static zend_string *zend_new_interned_string_permanent(zend_string *str);
-static zend_string *zend_new_interned_string_request(zend_string *str);
-static zend_string *zend_string_init_interned_permanent(const char *str, size_t size, int permanent);
-static zend_string *zend_string_init_interned_request(const char *str, size_t size, int permanent);
+static zend_string* ZEND_FASTCALL zend_new_interned_string_permanent(zend_string *str);
+static zend_string* ZEND_FASTCALL zend_new_interned_string_request(zend_string *str);
+static zend_string* ZEND_FASTCALL zend_string_init_interned_permanent(const char *str, size_t size, int permanent);
+static zend_string* ZEND_FASTCALL zend_string_init_interned_request(const char *str, size_t size, int permanent);
/* Any strings interned in the startup phase. Common to all the threads,
won't be free'd until process exit. If we want an ability to
@@ -48,7 +48,7 @@ ZEND_API zend_string *zend_empty_string = NULL;
ZEND_API zend_string *zend_one_char_string[256];
ZEND_API zend_string **zend_known_strings = NULL;
-ZEND_API zend_ulong zend_hash_func(const char *str, size_t len)
+ZEND_API zend_ulong ZEND_FASTCALL zend_hash_func(const char *str, size_t len)
{
return zend_inline_hash_func(str, len);
}
@@ -175,13 +175,13 @@ static zend_always_inline zend_string *zend_add_interned_string(zend_string *str
return str;
}
-ZEND_API zend_string *zend_interned_string_find_permanent(zend_string *str)
+ZEND_API zend_string* ZEND_FASTCALL zend_interned_string_find_permanent(zend_string *str)
{
zend_string_hash_val(str);
return zend_interned_string_ht_lookup(str, &interned_strings_permanent);
}
-static zend_string *zend_new_interned_string_permanent(zend_string *str)
+static zend_string* ZEND_FASTCALL zend_new_interned_string_permanent(zend_string *str)
{
zend_string *ret;
@@ -207,7 +207,7 @@ static zend_string *zend_new_interned_string_permanent(zend_string *str)
return zend_add_interned_string(str, &interned_strings_permanent, IS_STR_PERMANENT);
}
-static zend_string *zend_new_interned_string_request(zend_string *str)
+static zend_string* ZEND_FASTCALL zend_new_interned_string_request(zend_string *str)
{
zend_string *ret;
@@ -244,7 +244,7 @@ static zend_string *zend_new_interned_string_request(zend_string *str)
return ret;
}
-static zend_string *zend_string_init_interned_permanent(const char *str, size_t size, int permanent)
+static zend_string* ZEND_FASTCALL zend_string_init_interned_permanent(const char *str, size_t size, int permanent)
{
zend_string *ret;
zend_ulong h = zend_inline_hash_func(str, size);
@@ -259,7 +259,7 @@ static zend_string *zend_string_init_interned_permanent(const char *str, size_t
return zend_add_interned_string(ret, &interned_strings_permanent, IS_STR_PERMANENT);
}
-static zend_string *zend_string_init_interned_request(const char *str, size_t size, int permanent)
+static zend_string* ZEND_FASTCALL zend_string_init_interned_request(const char *str, size_t size, int permanent)
{
zend_string *ret;
zend_ulong h = zend_inline_hash_func(str, size);
diff --git a/Zend/zend_string.h b/Zend/zend_string.h
index 0fd06447b7..99674cd5da 100644
--- a/Zend/zend_string.h
+++ b/Zend/zend_string.h
@@ -26,18 +26,19 @@
BEGIN_EXTERN_C()
typedef void (*zend_string_copy_storage_func_t)(void);
-typedef zend_string *(*zend_new_interned_string_func_t)(zend_string *str);
-typedef zend_string *(*zend_string_init_interned_func_t)(const char *str, size_t size, int permanent);
+typedef zend_string *(ZEND_FASTCALL *zend_new_interned_string_func_t)(zend_string *str);
+typedef zend_string *(ZEND_FASTCALL *zend_string_init_interned_func_t)(const char *str, size_t size, int permanent);
ZEND_API extern zend_new_interned_string_func_t zend_new_interned_string;
ZEND_API extern zend_string_init_interned_func_t zend_string_init_interned;
-ZEND_API zend_ulong zend_hash_func(const char *str, size_t len);
+ZEND_API zend_ulong ZEND_FASTCALL zend_hash_func(const char *str, size_t len);
+ZEND_API zend_string* ZEND_FASTCALL zend_interned_string_find_permanent(zend_string *str);
+
ZEND_API void zend_interned_strings_init(void);
ZEND_API void zend_interned_strings_dtor(void);
ZEND_API void zend_interned_strings_activate(void);
ZEND_API void zend_interned_strings_deactivate(void);
-ZEND_API zend_string *zend_interned_string_find_permanent(zend_string *str);
ZEND_API void zend_interned_strings_set_request_storage_handlers(zend_new_interned_string_func_t handler, zend_string_init_interned_func_t init_handler);
ZEND_API void zend_interned_strings_set_permanent_storage_copy_handlers(zend_string_copy_storage_func_t copy_handler, zend_string_copy_storage_func_t restore_handler);
ZEND_API void zend_interned_strings_switch_storage(zend_bool request);
diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c
index ac781afd89..20189b160d 100644
--- a/ext/opcache/ZendAccelerator.c
+++ b/ext/opcache/ZendAccelerator.c
@@ -437,7 +437,7 @@ static zend_always_inline zend_string *accel_find_interned_string(zend_string *s
return NULL;
}
-zend_string *accel_new_interned_string(zend_string *str)
+zend_string* ZEND_FASTCALL accel_new_interned_string(zend_string *str)
{
zend_ulong h;
uint32_t pos, *hash_slot;
@@ -493,7 +493,7 @@ zend_string *accel_new_interned_string(zend_string *str)
return s;
}
-static zend_string *accel_new_interned_string_for_php(zend_string *str)
+static zend_string* ZEND_FASTCALL accel_new_interned_string_for_php(zend_string *str)
{
zend_string_hash_val(str);
if (ZCG(counted)) {
@@ -528,7 +528,7 @@ static zend_always_inline zend_string *accel_find_interned_string_ex(zend_ulong
return NULL;
}
-static zend_string *accel_init_interned_string_for_php(const char *str, size_t size, int permanent)
+static zend_string* ZEND_FASTCALL accel_init_interned_string_for_php(const char *str, size_t size, int permanent)
{
if (ZCG(counted)) {
zend_ulong h = zend_inline_hash_func(str, size);
@@ -708,7 +708,7 @@ static void accel_copy_permanent_strings(zend_new_interned_string_func_t new_int
} ZEND_HASH_FOREACH_END();
}
-static zend_string *accel_replace_string_by_shm_permanent(zend_string *str)
+static zend_string* ZEND_FASTCALL accel_replace_string_by_shm_permanent(zend_string *str)
{
zend_string *ret = accel_find_interned_string(str);
@@ -719,7 +719,7 @@ static zend_string *accel_replace_string_by_shm_permanent(zend_string *str)
return str;
}
-static zend_string *accel_replace_string_by_process_permanent(zend_string *str)
+static zend_string* ZEND_FASTCALL accel_replace_string_by_process_permanent(zend_string *str)
{
zend_string *ret = zend_interned_string_find_permanent(str);
diff --git a/ext/opcache/ZendAccelerator.h b/ext/opcache/ZendAccelerator.h
index 378f38b363..d6660dd2d6 100644
--- a/ext/opcache/ZendAccelerator.h
+++ b/ext/opcache/ZendAccelerator.h
@@ -333,6 +333,6 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type);
#define IS_ACCEL_INTERNED(str) \
((char*)(str) >= (char*)ZCSG(interned_strings).start && (char*)(str) < (char*)ZCSG(interned_strings).top)
-zend_string *accel_new_interned_string(zend_string *str);
+zend_string* ZEND_FASTCALL accel_new_interned_string(zend_string *str);
#endif /* ZEND_ACCELERATOR_H */