summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TSRM/TSRM.c5
-rw-r--r--TSRM/TSRM.h34
-rw-r--r--Zend/Makefile.am1
-rw-r--r--Zend/zend.c11
-rw-r--r--Zend/zend.h14
-rw-r--r--Zend/zend_API.c4
-rw-r--r--Zend/zend_alloc.c35
-rw-r--r--Zend/zend_ast.c6
-rw-r--r--Zend/zend_compile.c4
-rw-r--r--Zend/zend_execute_API.c16
-rw-r--r--Zend/zend_gc.h2
-rw-r--r--Zend/zend_globals_macros.h11
-rw-r--r--Zend/zend_hash.c28
-rw-r--r--Zend/zend_inheritance.c1
-rw-r--r--Zend/zend_ini.c7
-rw-r--r--Zend/zend_ini_parser.y7
-rw-r--r--Zend/zend_language_parser.y5
-rw-r--r--Zend/zend_list.c3
-rw-r--r--Zend/zend_modules.h2
-rw-r--r--Zend/zend_opcode.c1
-rw-r--r--Zend/zend_operators.c16
-rw-r--r--Zend/zend_signal.c1
-rw-r--r--Zend/zend_signal.h2
-rw-r--r--Zend/zend_variables.c7
-rw-r--r--Zend/zend_virtual_cwd.h2
-rw-r--r--acinclude.m42
-rw-r--r--configure.in3
-rw-r--r--ext/com_dotnet/com_persist.c1
-rw-r--r--ext/com_dotnet/com_wrapper.c1
-rw-r--r--ext/curl/interface.c6
-rw-r--r--ext/curl/multi.c1
-rw-r--r--ext/date/php_date.c1
-rw-r--r--ext/dba/dba_db3.c2
-rw-r--r--ext/dba/dba_db4.c2
-rw-r--r--ext/dom/xpath.c2
-rw-r--r--ext/fileinfo/libmagic/apprentice.c10
-rw-r--r--ext/fileinfo/libmagic/fsmagic.c1
-rw-r--r--ext/fileinfo/libmagic/funcs.c3
-rw-r--r--ext/fileinfo/libmagic/magic.c1
-rw-r--r--ext/fileinfo/libmagic/print.c1
-rw-r--r--ext/fileinfo/libmagic/softmagic.c2
-rw-r--r--ext/ftp/ftp.c1
-rw-r--r--ext/gd/gd.c3
-rw-r--r--ext/gd/gd_compat.c2
-rw-r--r--ext/gd/gd_ctx.c8
-rw-r--r--ext/gd/libgd/gd.c4
-rw-r--r--ext/gd/libgd/gdft.c1
-rw-r--r--ext/gd/libgd/gdkanji.c1
-rw-r--r--ext/iconv/iconv.c1
-rw-r--r--ext/imap/php_imap.c14
-rw-r--r--ext/intl/collator/collator_convert.c2
-rw-r--r--ext/intl/converter/converter.c12
-rw-r--r--ext/ldap/ldap.c1
-rw-r--r--ext/libxml/libxml.c14
-rw-r--r--ext/mysqli/mysqli.c3
-rw-r--r--ext/mysqlnd/mysqlnd_debug.c9
-rw-r--r--ext/mysqlnd/mysqlnd_debug.h3
-rw-r--r--ext/mysqlnd/mysqlnd_driver.c4
-rw-r--r--ext/mysqlnd/mysqlnd_plugin.c2
-rw-r--r--ext/odbc/php_odbc.c6
-rw-r--r--ext/opcache/ZendAccelerator.c9
-rw-r--r--ext/opcache/shared_alloc_win32.c1
-rw-r--r--ext/opcache/zend_accelerator_blacklist.c1
-rw-r--r--ext/opcache/zend_accelerator_debug.c1
-rw-r--r--ext/opcache/zend_accelerator_util_funcs.c3
-rw-r--r--ext/opcache/zend_shared_alloc.c3
-rwxr-xr-xext/openssl/openssl.c4
-rw-r--r--ext/openssl/xp_ssl.c6
-rw-r--r--ext/pcntl/pcntl.c2
-rw-r--r--ext/pcntl/php_signal.c4
-rw-r--r--ext/pdo/pdo_stmt.c1
-rw-r--r--ext/pdo_dblib/pdo_dblib.c2
-rw-r--r--ext/pdo_oci/oci_statement.c3
-rw-r--r--ext/pdo_sqlite/sqlite_driver.c6
-rw-r--r--ext/pgsql/pgsql.c2
-rw-r--r--ext/phar/phar.c4
-rw-r--r--ext/phar/phar_internal.h2
-rw-r--r--ext/readline/readline.c2
-rw-r--r--ext/readline/readline_cli.c1
-rw-r--r--ext/session/mod_mm.c2
-rw-r--r--ext/soap/php_encoding.c6
-rw-r--r--ext/soap/php_sdl.c1
-rw-r--r--ext/soap/php_xml.c2
-rw-r--r--ext/soap/soap.c2
-rw-r--r--ext/sockets/config.m42
-rw-r--r--ext/sockets/config.w322
-rw-r--r--ext/sockets/conversions.c6
-rw-r--r--ext/sockets/php_sockets.h2
-rw-r--r--ext/sockets/sockets.c9
-rw-r--r--ext/sqlite3/sqlite3.c7
-rw-r--r--ext/standard/assert.c2
-rw-r--r--ext/standard/basic_functions.c3
-rw-r--r--ext/standard/basic_functions.h2
-rw-r--r--ext/standard/browscap.c2
-rw-r--r--ext/standard/config.m43
-rw-r--r--ext/standard/config.w323
-rw-r--r--ext/standard/dir.c2
-rw-r--r--ext/standard/exec.c4
-rw-r--r--ext/standard/file.h2
-rw-r--r--ext/standard/incomplete_class.c3
-rw-r--r--ext/standard/info.c3
-rw-r--r--ext/standard/math.c8
-rw-r--r--ext/standard/php_array.h2
-rw-r--r--ext/standard/php_lcg.h2
-rw-r--r--ext/standard/scanf.c1
-rw-r--r--ext/standard/string.c1
-rw-r--r--ext/tidy/tidy.c2
-rw-r--r--ext/wddx/wddx.c7
-rw-r--r--ext/xml/xml.c3
-rw-r--r--ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c1
-rw-r--r--ext/xmlrpc/xmlrpc-epi-php.c4
-rw-r--r--ext/xsl/xsltprocessor.c2
-rw-r--r--ext/zlib/zlib.c3
-rw-r--r--main/main.c13
-rw-r--r--main/network.c2
-rw-r--r--main/output.c5
-rw-r--r--main/php_globals.h2
-rw-r--r--main/php_ini.c1
-rw-r--r--main/php_output.h7
-rw-r--r--main/snprintf.c1
-rw-r--r--main/spprintf.c1
-rw-r--r--main/streams/cast.c14
-rw-r--r--sapi/apache2handler/sapi_apache2.c1
-rw-r--r--sapi/cli/php_cli.c2
-rw-r--r--sapi/cli/php_cli_server.c15
-rw-r--r--win32/build/config.w322
-rw-r--r--win32/php_win32_globals.h2
-rw-r--r--win32/readdir.c1
-rw-r--r--win32/wsyslog.c4
129 files changed, 120 insertions, 471 deletions
diff --git a/TSRM/TSRM.c b/TSRM/TSRM.c
index efdea5c880..b1f992c91d 100644
--- a/TSRM/TSRM.c
+++ b/TSRM/TSRM.c
@@ -791,4 +791,9 @@ void tsrm_error_set(int level, char *debug_filename)
#endif
}
+TSRM_API inline void *tsrm_get_ls_cache(void)
+{
+ return tsrm_tls_get();
+}
+
#endif /* ZTS */
diff --git a/TSRM/TSRM.h b/TSRM/TSRM.h
index b232429d4d..b303c13a6a 100644
--- a/TSRM/TSRM.h
+++ b/TSRM/TSRM.h
@@ -155,17 +155,32 @@ TSRM_API void *tsrm_new_interpreter_context(void);
TSRM_API void *tsrm_set_interpreter_context(void *new_ctx);
TSRM_API void tsrm_free_interpreter_context(void *context);
+TSRM_API inline void *tsrm_get_ls_cache(void);
+
+#ifdef TSRM_WIN32
+# define TSRM_TLS __declspec(thread)
+#else
+# define TSRM_TLS __thread
+#endif
+
#define TSRM_SHUFFLE_RSRC_ID(rsrc_id) ((rsrc_id)+1)
#define TSRM_UNSHUFFLE_RSRC_ID(rsrc_id) ((rsrc_id)-1)
#define TSRMLS_FETCH() void ***tsrm_ls = (void ***) ts_resource_ex(0, NULL)
#define TSRMLS_FETCH_FROM_CTX(ctx) void ***tsrm_ls = (void ***) ctx
-#define TSRMLS_SET_CTX(ctx) ctx = (void ***) tsrm_ls
-#define TSRMG(id, type, element) (((type) (*((void ***) tsrm_ls))[TSRM_UNSHUFFLE_RSRC_ID(id)])->element)
-#define TSRMLS_D void ***tsrm_ls
-#define TSRMLS_DC , TSRMLS_D
-#define TSRMLS_C tsrm_ls
-#define TSRMLS_CC , TSRMLS_C
+#define TSRMLS_SET_CTX(ctx) ctx = (void ***) tsrm_get_ls_cache()
+#define TSRMG(id, type, element) (((type) (*((void ***) tsrm_get_ls_cache()))[TSRM_UNSHUFFLE_RSRC_ID(id)])->element)
+
+#define TSRMG_STATIC(id, type, element) (((type) (*((void ***) _tsrm_ls_cache))[TSRM_UNSHUFFLE_RSRC_ID(id)])->element)
+#define TSRMLS_CACHE_EXTERN extern TSRM_TLS void *_tsrm_ls_cache
+#define TSRMLS_CACHE_DEFINE TSRM_TLS void *_tsrm_ls_cache
+#define TSRMLS_CACHE_UPDATE _tsrm_ls_cache = tsrm_get_ls_cache()
+
+/* BC only */
+#define TSRMLS_D
+#define TSRMLS_DC
+#define TSRMLS_C
+#define TSRMLS_CC
#ifdef __cplusplus
}
@@ -176,6 +191,13 @@ TSRM_API void tsrm_free_interpreter_context(void *context);
#define TSRMLS_FETCH()
#define TSRMLS_FETCH_FROM_CTX(ctx)
#define TSRMLS_SET_CTX(ctx)
+
+#define TSRMG_STATIC(id, type, element)
+#define TSRMLS_CACHE_EXTERN
+#define TSRMLS_CACHE_DEFINE
+#define TSRMLS_CACHE_UPDATE
+
+/* BC only */
#define TSRMLS_D void
#define TSRMLS_DC
#define TSRMLS_C
diff --git a/Zend/Makefile.am b/Zend/Makefile.am
index 2a76db36b1..09018a0d3d 100644
--- a/Zend/Makefile.am
+++ b/Zend/Makefile.am
@@ -20,6 +20,7 @@ libZend_la_SOURCES=\
zend_strtod.c zend_closures.c zend_float.c zend_string.c zend_signal.c \
zend_generators.c zend_virtual_cwd.c zend_ast.c
+libZend_la_CFLAGS = -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1
libZend_la_LDFLAGS =
libZend_la_LIBADD = @ZEND_EXTRA_LIBS@
diff --git a/Zend/zend.c b/Zend/zend.c
index 7fef34c94e..a7d3bc156e 100644
--- a/Zend/zend.c
+++ b/Zend/zend.c
@@ -120,6 +120,7 @@ static HashTable *global_class_table = NULL;
static HashTable *global_constants_table = NULL;
static HashTable *global_auto_globals_table = NULL;
static HashTable *global_persistent_list = NULL;
+ZEND_TSRMLS_CACHE_DEFINE;
#endif
ZEND_API zend_utility_values zend_uv;
@@ -557,6 +558,7 @@ int zend_startup(zend_utility_functions *utility_functions, char **extensions TS
zend_executor_globals *executor_globals;
extern ZEND_API ts_rsrc_id ini_scanner_globals_id;
extern ZEND_API ts_rsrc_id language_scanner_globals_id;
+ ZEND_TSRMLS_CACHE_UPDATE;
#else
extern zend_ini_scanner_globals ini_scanner_globals;
extern zend_php_scanner_globals language_scanner_globals;
@@ -705,16 +707,16 @@ void zend_post_startup(TSRMLS_D) /* {{{ */
free(compiler_globals->function_table);
free(compiler_globals->class_table);
if ((script_encoding_list = (zend_encoding **)compiler_globals->script_encoding_list)) {
- compiler_globals_ctor(compiler_globals, tsrm_ls);
+ compiler_globals_ctor(compiler_globals TSRMLS_CC);
compiler_globals->script_encoding_list = (const zend_encoding **)script_encoding_list;
} else {
- compiler_globals_ctor(compiler_globals, tsrm_ls);
+ compiler_globals_ctor(compiler_globals TSRMLS_CC);
}
free(EG(zend_constants));
virtual_cwd_deactivate(TSRMLS_C);
- executor_globals_ctor(executor_globals, tsrm_ls);
+ executor_globals_ctor(executor_globals TSRMLS_CC);
global_persistent_list = &EG(persistent_list);
zend_copy_ini_directives(TSRMLS_C);
#else
@@ -807,8 +809,6 @@ void zenderror(const char *error) /* {{{ */
BEGIN_EXTERN_C()
ZEND_API void _zend_bailout(char *filename, uint lineno) /* {{{ */
{
- TSRMLS_FETCH();
-
if (!EG(bailout)) {
zend_output_debug_string(1, "%s(%d) : Bailed out without a bailout address!", filename, lineno);
exit(-1);
@@ -974,7 +974,6 @@ static void zend_error_va_list(int type, const char *format, va_list args)
zend_stack delayed_oplines_stack;
zend_stack context_stack;
zend_array *symbol_table;
- TSRMLS_FETCH();
/* Report about uncaught exception in case of fatal errors */
if (EG(exception)) {
diff --git a/Zend/zend.h b/Zend/zend.h
index 969fa5e71b..81c165210f 100644
--- a/Zend/zend.h
+++ b/Zend/zend.h
@@ -60,6 +60,20 @@
!ZEND_USER_CODE(EX(prev_execute_data)->func->common.type) || \
!(EX(prev_execute_data)->opline->result_type & EXT_TYPE_UNUSED))
+#ifdef ZEND_ENABLE_STATIC_TSRMLS_CACHE
+#define ZEND_TSRMG TSRMG_STATIC
+#define ZEND_TSRMLS_CACHE_EXTERN TSRMLS_CACHE_EXTERN
+#define ZEND_TSRMLS_CACHE_DEFINE TSRMLS_CACHE_DEFINE
+#define ZEND_TSRMLS_CACHE_UPDATE TSRMLS_CACHE_UPDATE
+#else
+#define ZEND_TSRMG TSRMG
+#define ZEND_TSRMLS_CACHE_EXTERN
+#define ZEND_TSRMLS_CACHE_DEFINE
+#define ZEND_TSRMLS_CACHE_UPDATE
+#endif
+
+ZEND_TSRMLS_CACHE_EXTERN;
+
#ifdef HAVE_NORETURN
# if defined(ZEND_WIN32)
ZEND_API ZEND_NORETURN void zend_error_noreturn(int type, const char *format, ...);
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index dd60dcb5fb..5fa509bc6f 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -48,7 +48,6 @@ ZEND_API int zend_get_parameters(int ht, int param_count, ...) /* {{{ */
int arg_count;
va_list ptr;
zval **param, *param_ptr;
- TSRMLS_FETCH();
param_ptr = ZEND_CALL_ARG(EG(current_execute_data), 1);
arg_count = EG(current_execute_data)->num_args;
@@ -84,7 +83,6 @@ ZEND_API int zend_get_parameters_ex(int param_count, ...) /* {{{ */
int arg_count;
va_list ptr;
zval **param, *param_ptr;
- TSRMLS_FETCH();
param_ptr = ZEND_CALL_ARG(EG(current_execute_data), 1);
arg_count = EG(current_execute_data)->num_args;
@@ -2475,8 +2473,6 @@ static void clean_module_classes(int module_number TSRMLS_DC) /* {{{ */
void module_destructor(zend_module_entry *module) /* {{{ */
{
- TSRMLS_FETCH();
-
if (module->type == MODULE_TEMPORARY) {
zend_clean_module_rsrc_dtors(module->module_number TSRMLS_CC);
clean_module_constants(module->module_number TSRMLS_CC);
diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c
index dd1c2d6450..aea04d82f0 100644
--- a/Zend/zend_alloc.c
+++ b/Zend/zend_alloc.c
@@ -354,8 +354,6 @@ static ZEND_NORETURN void zend_mm_safe_error(zend_mm_heap *heap,
#endif
size_t size)
{
- TSRMLS_FETCH();
-
heap->overflow = 1;
zend_try {
zend_error_noreturn(E_ERROR,
@@ -2009,7 +2007,7 @@ typedef struct _zend_alloc_globals {
#ifdef ZTS
static int alloc_globals_id;
-# define AG(v) TSRMG(alloc_globals_id, zend_alloc_globals *, v)
+# define AG(v) ZEND_TSRMG(alloc_globals_id, zend_alloc_globals *, v)
#else
# define AG(v) (alloc_globals.v)
static zend_alloc_globals alloc_globals;
@@ -2046,7 +2044,6 @@ ZEND_API int is_zend_mm(TSRMLS_D)
# define _ZEND_BIN_ALLOCATOR(_num, _size, _elements, _pages, x, y) \
ZEND_API void* ZEND_FASTCALL _emalloc_ ## _size(void) { \
- TSRMLS_FETCH(); \
ZEND_MM_CUSTOM_ALLOCATOR(_size); \
return zend_mm_alloc_small(AG(mm_heap), _size, _num ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); \
}
@@ -2055,23 +2052,18 @@ ZEND_MM_BINS_INFO(_ZEND_BIN_ALLOCATOR, x, y)
ZEND_API void* ZEND_FASTCALL _emalloc_large(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)
{
- TSRMLS_FETCH();
-
ZEND_MM_CUSTOM_ALLOCATOR(size);
return zend_mm_alloc_large(AG(mm_heap), size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
}
ZEND_API void* ZEND_FASTCALL _emalloc_huge(size_t size)
{
- TSRMLS_FETCH();
-
ZEND_MM_CUSTOM_ALLOCATOR(size);
return zend_mm_alloc_huge(AG(mm_heap), size);
}
# define _ZEND_BIN_FREE(_num, _size, _elements, _pages, x, y) \
ZEND_API void ZEND_FASTCALL _efree_ ## _size(void *ptr) { \
- TSRMLS_FETCH(); \
ZEND_MM_CUSTOM_DEALLOCATOR(ptr); \
{ \
size_t page_offset = ZEND_MM_ALIGNED_OFFSET(ptr, ZEND_MM_CHUNK_SIZE); \
@@ -2088,8 +2080,6 @@ ZEND_MM_BINS_INFO(_ZEND_BIN_FREE, x, y)
ZEND_API void ZEND_FASTCALL _efree_large(void *ptr, size_t size)
{
- TSRMLS_FETCH();
-
ZEND_MM_CUSTOM_DEALLOCATOR(ptr);
{
size_t page_offset = ZEND_MM_ALIGNED_OFFSET(ptr, ZEND_MM_CHUNK_SIZE);
@@ -2106,8 +2096,6 @@ ZEND_API void ZEND_FASTCALL _efree_large(void *ptr, size_t size)
ZEND_API void ZEND_FASTCALL _efree_huge(void *ptr, size_t size)
{
- TSRMLS_FETCH();
-
ZEND_MM_CUSTOM_DEALLOCATOR(ptr);
// TODO: use size???
zend_mm_free_huge(AG(mm_heap), ptr);
@@ -2116,8 +2104,6 @@ ZEND_API void ZEND_FASTCALL _efree_huge(void *ptr, size_t size)
ZEND_API void* ZEND_FASTCALL _emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)
{
- TSRMLS_FETCH();
-
#if ZEND_MM_CUSTOM
if (UNEXPECTED(AG(mm_heap)->use_custom_heap)) {
return AG(mm_heap)->_malloc(size);
@@ -2128,8 +2114,6 @@ ZEND_API void* ZEND_FASTCALL _emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LI
ZEND_API void ZEND_FASTCALL _efree(void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)
{
- TSRMLS_FETCH();
-
#if ZEND_MM_CUSTOM
if (UNEXPECTED(AG(mm_heap)->use_custom_heap)) {
AG(mm_heap)->_free(ptr);
@@ -2141,8 +2125,6 @@ ZEND_API void ZEND_FASTCALL _efree(void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_OR
ZEND_API void* ZEND_FASTCALL _erealloc(void *ptr, size_t size, int allow_failure ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)
{
- TSRMLS_FETCH();
-
if (UNEXPECTED(AG(mm_heap)->use_custom_heap)) {
return AG(mm_heap)->_realloc(ptr, size);
}
@@ -2194,9 +2176,7 @@ ZEND_API void* ZEND_FASTCALL _safe_realloc(void *ptr, size_t nmemb, size_t size,
ZEND_API void* ZEND_FASTCALL _ecalloc(size_t nmemb, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)
{
void *p;
-#ifdef ZEND_SIGNALS
- TSRMLS_FETCH();
-#endif
+
HANDLE_BLOCK_INTERRUPTIONS();
p = _safe_emalloc(nmemb, size, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
@@ -2213,9 +2193,6 @@ ZEND_API char* ZEND_FASTCALL _estrdup(const char *s ZEND_FILE_LINE_DC ZEND_FILE_
{
size_t length;
char *p;
-#ifdef ZEND_SIGNALS
- TSRMLS_FETCH();
-#endif
HANDLE_BLOCK_INTERRUPTIONS();
@@ -2233,9 +2210,6 @@ ZEND_API char* ZEND_FASTCALL _estrdup(const char *s ZEND_FILE_LINE_DC ZEND_FILE_
ZEND_API char* ZEND_FASTCALL _estrndup(const char *s, size_t length ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)
{
char *p;
-#ifdef ZEND_SIGNALS
- TSRMLS_FETCH();
-#endif
HANDLE_BLOCK_INTERRUPTIONS();
@@ -2254,9 +2228,6 @@ ZEND_API char* ZEND_FASTCALL _estrndup(const char *s, size_t length ZEND_FILE_LI
ZEND_API char* ZEND_FASTCALL zend_strndup(const char *s, size_t length)
{
char *p;
-#ifdef ZEND_SIGNALS
- TSRMLS_FETCH();
-#endif
HANDLE_BLOCK_INTERRUPTIONS();
@@ -2314,6 +2285,7 @@ ZEND_API void shutdown_memory_manager(int silent, int full_shutdown TSRMLS_DC)
static void alloc_globals_ctor(zend_alloc_globals *alloc_globals TSRMLS_DC)
{
+
#if ZEND_MM_CUSTOM
char *tmp = getenv("USE_ZEND_ALLOC");
@@ -2327,6 +2299,7 @@ static void alloc_globals_ctor(zend_alloc_globals *alloc_globals TSRMLS_DC)
return;
}
#endif
+ ZEND_TSRMLS_CACHE_UPDATE;
alloc_globals->mm_heap = zend_mm_init();
}
diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c
index 9604079a9e..97db764fbc 100644
--- a/Zend/zend_ast.c
+++ b/Zend/zend_ast.c
@@ -43,7 +43,6 @@ static inline size_t zend_ast_list_size(uint32_t children) {
ZEND_API zend_ast *zend_ast_create_znode(znode *node) {
zend_ast_znode *ast;
- TSRMLS_FETCH();
ast = zend_ast_alloc(sizeof(zend_ast_znode) TSRMLS_CC);
ast->kind = ZEND_AST_ZNODE;
@@ -55,7 +54,6 @@ ZEND_API zend_ast *zend_ast_create_znode(znode *node) {
ZEND_API zend_ast *zend_ast_create_zval_ex(zval *zv, zend_ast_attr attr) {
zend_ast_zval *ast;
- TSRMLS_FETCH();
ast = zend_ast_alloc(sizeof(zend_ast_zval) TSRMLS_CC);
ast->kind = ZEND_AST_ZVAL;
@@ -70,7 +68,6 @@ ZEND_API zend_ast *zend_ast_create_decl(
zend_string *name, zend_ast *child0, zend_ast *child1, zend_ast *child2
) {
zend_ast_decl *ast;
- TSRMLS_FETCH();
ast = zend_ast_alloc(sizeof(zend_ast_decl) TSRMLS_CC);
ast->kind = kind;
@@ -91,7 +88,6 @@ ZEND_API zend_ast *zend_ast_create_decl(
static zend_ast *zend_ast_create_from_va_list(zend_ast_kind kind, zend_ast_attr attr, va_list va) {
uint32_t i, children = kind >> ZEND_AST_NUM_CHILDREN_SHIFT;
zend_ast *ast;
- TSRMLS_FETCH();
ast = zend_ast_alloc(zend_ast_size(children) TSRMLS_CC);
ast->kind = kind;
@@ -140,7 +136,6 @@ ZEND_API zend_ast *zend_ast_create(zend_ast_kind kind, ...) {
ZEND_API zend_ast *zend_ast_create_list(uint32_t init_children, zend_ast_kind kind, ...) {
zend_ast *ast;
zend_ast_list *list;
- TSRMLS_FETCH();
ast = zend_ast_alloc(zend_ast_list_size(4) TSRMLS_CC);
list = (zend_ast_list *) ast;
@@ -169,7 +164,6 @@ static inline zend_bool is_power_of_two(uint32_t n) {
ZEND_API zend_ast *zend_ast_list_add(zend_ast *ast, zend_ast *op) {
zend_ast_list *list = zend_ast_get_list(ast);
if (list->children >= 4 && is_power_of_two(list->children)) {
- TSRMLS_FETCH();
list = zend_ast_realloc(list,
zend_ast_list_size(list->children), zend_ast_list_size(list->children * 2) TSRMLS_CC);
}
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index e242bac951..ded71481db 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -186,8 +186,6 @@ void zend_init_compiler_data_structures(TSRMLS_D) /* {{{ */
ZEND_API void file_handle_dtor(zend_file_handle *fh) /* {{{ */
{
- TSRMLS_FETCH();
-
zend_file_handle_dtor(fh TSRMLS_CC);
}
/* }}} */
@@ -3083,7 +3081,7 @@ static void zend_free_foreach_and_switch_variables(TSRMLS_D) /* {{{ */
opnum_start = get_next_op_number(CG(active_op_array));
#ifdef ZTS
- zend_stack_apply_with_argument(&CG(loop_var_stack), ZEND_STACK_APPLY_TOPDOWN, (int (*)(void *element, void *)) generate_free_loop_var TSRMLS_CC);
+ zend_stack_apply_with_argument(&CG(loop_var_stack), ZEND_STACK_APPLY_TOPDOWN, (int (*)(void *element, void *)) generate_free_loop_var, NULL);
#else
zend_stack_apply(&CG(loop_var_stack), ZEND_STACK_APPLY_TOPDOWN, (int (*)(void *element)) generate_free_loop_var);
#endif
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c
index cd2cc98b42..2ec9c8dbcc 100644
--- a/Zend/zend_execute_API.c
+++ b/Zend/zend_execute_API.c
@@ -206,8 +206,6 @@ static int zval_call_destructor(zval *zv TSRMLS_DC) /* {{{ */
static void zend_unclean_zval_ptr_dtor(zval *zv) /* {{{ */
{
- TSRMLS_FETCH();
-
if (Z_TYPE_P(zv) == IS_INDIRECT) {
zv = Z_INDIRECT_P(zv);
}
@@ -485,7 +483,6 @@ ZEND_API zend_bool zend_is_executing(TSRMLS_D) /* {{{ */
ZEND_API void _zval_ptr_dtor(zval *zval_ptr ZEND_FILE_LINE_DC) /* {{{ */
{
- TSRMLS_FETCH();
i_zval_ptr_dtor(zval_ptr ZEND_FILE_LINE_RELAY_CC TSRMLS_CC);
}
/* }}} */
@@ -1144,8 +1141,6 @@ ZEND_API int zend_eval_string_ex(char *str, zval *retval_ptr, char *string_name,
ZEND_API void zend_timeout(int dummy) /* {{{ */
{
- TSRMLS_FETCH();
-
if (zend_on_timeout) {
#ifdef ZEND_SIGNALS
/*
@@ -1186,7 +1181,9 @@ static LRESULT CALLBACK zend_timeout_WndProc(HWND hWnd, UINT message, WPARAM wPa
break;
}
#endif
- EG(timed_out) = 0;
+ /* XXX this won't work with TLS enabled, EG is on a different thread.
+ But nothing happened anyway, no timeout here. */
+ /* EG(timed_out) = 0; */
}
break;
case WM_UNREGISTER_ZEND_TIMEOUT:
@@ -1204,7 +1201,10 @@ static LRESULT CALLBACK zend_timeout_WndProc(HWND hWnd, UINT message, WPARAM wPa
}
#endif
KillTimer(timeout_window, wParam);
- EG(timed_out) = 1;
+
+ /* XXX this won't work with TLS enabled, EG is on a different thread.
+ Maybe an ide were to throw the timeout window right from here. */
+ /*EG(timed_out) = 1; */
}
break;
default:
@@ -1278,8 +1278,6 @@ void zend_shutdown_timeout_thread(void) /* {{{ */
void zend_set_timeout(zend_long seconds, int reset_signals) /* {{{ */
{
- TSRMLS_FETCH();
-
EG(timeout_seconds) = seconds;
#ifdef ZEND_WIN32
diff --git a/Zend/zend_gc.h b/Zend/zend_gc.h
index 2eb8ea6ea3..d502f099aa 100644
--- a/Zend/zend_gc.h
+++ b/Zend/zend_gc.h
@@ -112,7 +112,7 @@ typedef struct _zend_gc_globals {
BEGIN_EXTERN_C()
ZEND_API extern int gc_globals_id;
END_EXTERN_C()
-#define GC_G(v) TSRMG(gc_globals_id, zend_gc_globals *, v)
+#define GC_G(v) ZEND_TSRMG(gc_globals_id, zend_gc_globals *, v)
#else
#define GC_G(v) (gc_globals.v)
extern ZEND_API zend_gc_globals gc_globals;
diff --git a/Zend/zend_globals_macros.h b/Zend/zend_globals_macros.h
index ac9b793775..7678b2b01d 100644
--- a/Zend/zend_globals_macros.h
+++ b/Zend/zend_globals_macros.h
@@ -31,18 +31,17 @@ BEGIN_EXTERN_C()
/* Compiler */
#ifdef ZTS
-# define CG(v) TSRMG(compiler_globals_id, zend_compiler_globals *, v)
-int zendparse(void *compiler_globals);
+# define CG(v) ZEND_TSRMG(compiler_globals_id, zend_compiler_globals *, v)
#else
# define CG(v) (compiler_globals.v)
extern ZEND_API struct _zend_compiler_globals compiler_globals;
-int zendparse(void);
#endif
+int zendparse(void);
/* Executor */
#ifdef ZTS
-# define EG(v) TSRMG(executor_globals_id, zend_executor_globals *, v)
+# define EG(v) ZEND_TSRMG(executor_globals_id, zend_executor_globals *, v)
#else
# define EG(v) (executor_globals.v)
extern ZEND_API zend_executor_globals executor_globals;
@@ -50,7 +49,7 @@ extern ZEND_API zend_executor_globals executor_globals;
/* Language Scanner */
#ifdef ZTS
-# define LANG_SCNG(v) TSRMG(language_scanner_globals_id, zend_php_scanner_globals *, v)
+# define LANG_SCNG(v) ZEND_TSRMG(language_scanner_globals_id, zend_php_scanner_globals *, v)
extern ZEND_API ts_rsrc_id language_scanner_globals_id;
#else
# define LANG_SCNG(v) (language_scanner_globals.v)
@@ -60,7 +59,7 @@ extern ZEND_API zend_php_scanner_globals language_scanner_globals;
/* INI Scanner */
#ifdef ZTS
-# define INI_SCNG(v) TSRMG(ini_scanner_globals_id, zend_ini_scanner_globals *, v)
+# define INI_SCNG(v) ZEND_TSRMG(ini_scanner_globals_id, zend_ini_scanner_globals *, v)
extern ZEND_API ts_rsrc_id ini_scanner_globals_id;
#else
# define INI_SCNG(v) (ini_scanner_globals.v)
diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c
index 6304737f04..797205775a 100644
--- a/Zend/zend_hash.c
+++ b/Zend/zend_hash.c
@@ -252,9 +252,6 @@ static zend_always_inline zval *_zend_hash_add_or_update_i(HashTable *ht, zend_s
uint32_t nIndex;
uint32_t idx;
Bucket *p;
-#ifdef ZEND_SIGNALS
- TSRMLS_FETCH();
-#endif
IS_CONSISTENT(ht);
@@ -407,9 +404,6 @@ static zend_always_inline zval *_zend_hash_index_add_or_update_i(HashTable *ht,
uint32_t nIndex;
uint32_t idx;
Bucket *p;
-#ifdef ZEND_SIGNALS
- TSRMLS_FETCH();
-#endif
IS_CONSISTENT(ht);
CHECK_INIT(ht, h < ht->nTableSize);
@@ -547,9 +541,6 @@ ZEND_API zval *_zend_hash_next_index_insert_new(HashTable *ht, zval *pData ZEND_
static void zend_hash_do_resize(HashTable *ht)
{
-#ifdef ZEND_SIGNALS
- TSRMLS_FETCH();
-#endif
IS_CONSISTENT(ht);
@@ -668,9 +659,6 @@ ZEND_API int zend_hash_del(HashTable *ht, zend_string *key)
uint32_t idx;
Bucket *p;
Bucket *prev = NULL;
-#ifdef ZEND_SIGNALS
- TSRMLS_FETCH();
-#endif
IS_CONSISTENT(ht);
@@ -707,9 +695,6 @@ ZEND_API int zend_hash_del_ind(HashTable *ht, zend_string *key)
uint32_t idx;
Bucket *p;
Bucket *prev = NULL;
-#ifdef ZEND_SIGNALS
- TSRMLS_FETCH();
-#endif
IS_CONSISTENT(ht);
@@ -759,9 +744,6 @@ ZEND_API int zend_hash_str_del(HashTable *ht, const char *str, size_t len)
uint32_t idx;
Bucket *p;
Bucket *prev = NULL;
-#ifdef ZEND_SIGNALS
- TSRMLS_FETCH();
-#endif
IS_CONSISTENT(ht);
@@ -810,9 +792,6 @@ ZEND_API int zend_hash_str_del_ind(HashTable *ht, const char *str, size_t len)
uint32_t idx;
Bucket *p;
Bucket *prev = NULL;
-#ifdef ZEND_SIGNALS
- TSRMLS_FETCH();
-#endif
IS_CONSISTENT(ht);
@@ -843,9 +822,6 @@ ZEND_API int zend_hash_index_del(HashTable *ht, zend_ulong h)
uint32_t idx;
Bucket *p;
Bucket *prev = NULL;
-#ifdef ZEND_SIGNALS
- TSRMLS_FETCH();
-#endif
IS_CONSISTENT(ht);
@@ -961,10 +937,6 @@ ZEND_API void zend_hash_clean(HashTable *ht)
*/
static void zend_hash_apply_deleter(HashTable *ht, uint32_t idx, Bucket *p)
{
-#ifdef ZEND_SIGNALS
- TSRMLS_FETCH();
-#endif
-
HANDLE_BLOCK_INTERRUPTIONS();
_zend_hash_del_el(ht, idx, p);
HANDLE_UNBLOCK_INTERRUPTIONS();
diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c
index f240ed7159..e7f075d457 100644
--- a/Zend/zend_inheritance.c
+++ b/Zend/zend_inheritance.c
@@ -551,7 +551,6 @@ static zend_bool do_inherit_method_check(HashTable *child_function_table, zend_f
{
uint32_t parent_flags = parent->common.fn_flags;
zend_function *child;
- TSRMLS_FETCH();
if ((child = zend_hash_find_ptr(child_function_table, key)) == NULL) {
if (parent_flags & (ZEND_ACC_ABSTRACT)) {
diff --git a/Zend/zend_ini.c b/Zend/zend_ini.c
index e60e58d2aa..1c827bbe4c 100644
--- a/Zend/zend_ini.c
+++ b/Zend/zend_ini.c
@@ -292,8 +292,6 @@ ZEND_API void zend_ini_refresh_caches(int stage TSRMLS_DC) /* {{{ */
ZEND_API int zend_alter_ini_entry(zend_string *name, zend_string *new_value, int modify_type, int stage) /* {{{ */
{
- TSRMLS_FETCH();
-
return zend_alter_ini_entry_ex(name, new_value, modify_type, stage, 0 TSRMLS_CC);
}
/* }}} */
@@ -302,7 +300,6 @@ ZEND_API int zend_alter_ini_entry_chars(zend_string *name, const char *value, si
{
int ret;
zend_string *new_value;
- TSRMLS_FETCH();
new_value = zend_string_init(value, value_length, stage != ZEND_INI_STAGE_RUNTIME);
ret = zend_alter_ini_entry_ex(name, new_value, modify_type, stage, 0 TSRMLS_CC);
@@ -378,7 +375,6 @@ ZEND_API int zend_alter_ini_entry_ex(zend_string *name, zend_string *new_value,
ZEND_API int zend_restore_ini_entry(zend_string *name, int stage) /* {{{ */
{
zend_ini_entry *ini_entry;
- TSRMLS_FETCH();
if ((ini_entry = zend_hash_find_ptr(EG(ini_directives), name)) == NULL ||
(stage == ZEND_INI_STAGE_RUNTIME && (ini_entry->modifiable & ZEND_INI_USER) == 0)) {
@@ -418,7 +414,6 @@ ZEND_API int zend_ini_register_displayer(char *name, uint name_length, void (*di
ZEND_API zend_long zend_ini_long(char *name, uint name_length, int orig) /* {{{ */
{
zend_ini_entry *ini_entry;
- TSRMLS_FETCH();
ini_entry = zend_hash_str_find_ptr(EG(ini_directives), name, name_length);
if (ini_entry) {
@@ -436,7 +431,6 @@ ZEND_API zend_long zend_ini_long(char *name, uint name_length, int orig) /* {{{
ZEND_API double zend_ini_double(char *name, uint name_length, int orig) /* {{{ */
{
zend_ini_entry *ini_entry;
- TSRMLS_FETCH();
ini_entry = zend_hash_str_find_ptr(EG(ini_directives), name, name_length);
if (ini_entry) {
@@ -454,7 +448,6 @@ ZEND_API double zend_ini_double(char *name, uint name_length, int orig) /* {{{ *
ZEND_API char *zend_ini_string_ex(char *name, uint name_length, int orig, zend_bool *exists) /* {{{ */
{
zend_ini_entry *ini_entry;
- TSRMLS_FETCH();
ini_entry = zend_hash_str_find_ptr(EG(ini_directives), name, name_length);
if (ini_entry) {
diff --git a/Zend/zend_ini_parser.y b/Zend/zend_ini_parser.y
index e343fcd92a..3ff392632c 100644
--- a/Zend/zend_ini_parser.y
+++ b/Zend/zend_ini_parser.y
@@ -32,13 +32,7 @@
#define YYERROR_VERBOSE
#define YYSTYPE zval
-#ifdef ZTS
-#define YYPARSE_PARAM tsrm_ls
-#define YYLEX_PARAM tsrm_ls
-int ini_parse(void *arg);
-#else
int ini_parse(void);
-#endif
#define ZEND_INI_PARSER_CB (CG(ini_parser_param))->ini_parser_cb
#define ZEND_INI_PARSER_ARG (CG(ini_parser_param))->arg
@@ -164,7 +158,6 @@ static void ini_error(const char *msg)
char *error_buf;
int error_buf_len;
char *currently_parsed_filename;
- TSRMLS_FETCH();
currently_parsed_filename = zend_ini_scanner_get_filename(TSRMLS_C);
if (currently_parsed_filename) {
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index 97fc4de546..83ece22e78 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -49,10 +49,6 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
%expect 2
%code requires {
-#ifdef ZTS
-# define YYPARSE_PARAM tsrm_ls
-# define YYLEX_PARAM tsrm_ls
-#endif
}
%destructor { zend_ast_destroy($$); } <ast>
@@ -1170,7 +1166,6 @@ static YYSIZE_T zend_yytnamerr(char *yyres, const char *yystr)
return yystrlen(yystr);
}
{
- TSRMLS_FETCH();
if (CG(parse_error) == 0) {
char buffer[120];
const unsigned char *end, *str, *tok1 = NULL, *tok2 = NULL;
diff --git a/Zend/zend_list.c b/Zend/zend_list.c
index d8141f8664..ab05f8c7ac 100644
--- a/Zend/zend_list.c
+++ b/Zend/zend_list.c
@@ -165,8 +165,6 @@ void list_entry_destructor(zval *zv)
zend_resource *res = Z_RES_P(zv);
if (res->type >= 0) {
- TSRMLS_FETCH();
-
zend_resource_dtor(res TSRMLS_CC);
}
efree_size(res, sizeof(zend_resource));
@@ -178,7 +176,6 @@ void plist_entry_destructor(zval *zv)
if (res->type >= 0) {
zend_rsrc_list_dtors_entry *ld;
- TSRMLS_FETCH();
ld = zend_hash_index_find_ptr(&list_destructors, res->type);
if (ld) {
diff --git a/Zend/zend_modules.h b/Zend/zend_modules.h
index 0cd9ca4d16..9b1717d5df 100644
--- a/Zend/zend_modules.h
+++ b/Zend/zend_modules.h
@@ -33,7 +33,7 @@
#define ZEND_MODULE_INFO_FUNC_ARGS zend_module_entry *zend_module TSRMLS_DC
#define ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU zend_module TSRMLS_CC
-#define ZEND_MODULE_API_NO 20140815
+#define ZEND_MODULE_API_NO 20141001
#ifdef ZTS
#define USING_ZTS 1
#else
diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c
index 5902abd4c5..965561311d 100644
--- a/Zend/zend_opcode.c
+++ b/Zend/zend_opcode.c
@@ -112,7 +112,6 @@ ZEND_API void destroy_zend_function(zend_function *function TSRMLS_DC)
ZEND_API void zend_function_dtor(zval *zv)
{
zend_function *function = Z_PTR_P(zv);
- TSRMLS_FETCH();
if (function->type == ZEND_USER_FUNCTION) {
ZEND_ASSERT(function->common.function_name);
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c
index b0a0e7519e..963c261d42 100644
--- a/Zend/zend_operators.c
+++ b/Zend/zend_operators.c
@@ -371,7 +371,6 @@ ZEND_API void convert_to_long_base(zval *op, int base) /* {{{ */
case IS_OBJECT:
{
zval dst;
- TSRMLS_FETCH();
convert_object_to_type(op, &dst, IS_LONG, convert_to_long);
zval_dtor(op);
@@ -429,7 +428,6 @@ ZEND_API void convert_to_double(zval *op) /* {{{ */
case IS_OBJECT:
{
zval dst;
- TSRMLS_FETCH();
convert_object_to_type(op, &dst, IS_DOUBLE, convert_to_double);
zval_dtor(op);
@@ -453,7 +451,6 @@ ZEND_API void convert_to_null(zval *op) /* {{{ */
if (Z_TYPE_P(op) == IS_OBJECT) {
if (Z_OBJ_HT_P(op)->cast_object) {
zval org;
- TSRMLS_FETCH();
ZVAL_COPY_VALUE(&org, op);
if (Z_OBJ_HT_P(op)->cast_object(&org, op, IS_NULL TSRMLS_CC) == SUCCESS) {
@@ -514,7 +511,6 @@ ZEND_API void convert_to_boolean(zval *op) /* {{{ */
case IS_OBJECT:
{
zval dst;
- TSRMLS_FETCH();
convert_object_to_type(op, &dst, _IS_BOOL, convert_to_boolean);
zval_dtor(op);
@@ -543,7 +539,6 @@ ZEND_API void _convert_to_string(zval *op ZEND_FILE_LINE_DC) /* {{{ */
case IS_UNDEF:
case IS_NULL:
case IS_FALSE: {
- TSRMLS_FETCH();
ZVAL_EMPTY_STRING(op);
break;
}
@@ -565,7 +560,6 @@ ZEND_API void _convert_to_string(zval *op ZEND_FILE_LINE_DC) /* {{{ */
case IS_DOUBLE: {
zend_string *str;
double dval = Z_DVAL_P(op);
- TSRMLS_FETCH();
str = zend_strpprintf(0, "%.*G", (int) EG(precision), dval);
/* %G already handles removing trailing zeros from the fractional part, yay */
@@ -579,7 +573,6 @@ ZEND_API void _convert_to_string(zval *op ZEND_FILE_LINE_DC) /* {{{ */
break;
case IS_OBJECT: {
zval dst;
- TSRMLS_FETCH();
convert_object_to_type(op, &dst, IS_STRING, convert_to_string);
@@ -612,8 +605,6 @@ static void convert_scalar_to_array(zval *op TSRMLS_DC) /* {{{ */
ZEND_API void convert_to_array(zval *op) /* {{{ */
{
- TSRMLS_FETCH();
-
switch (Z_TYPE_P(op)) {
case IS_ARRAY:
break;
@@ -660,8 +651,6 @@ ZEND_API void convert_to_array(zval *op) /* {{{ */
ZEND_API void convert_to_object(zval *op) /* {{{ */
{
- TSRMLS_FETCH();
-
switch (Z_TYPE_P(op)) {
case IS_ARRAY:
{
@@ -2164,7 +2153,6 @@ try_again:
/* proxy object */
zval rv;
zval *val;
- TSRMLS_FETCH();
val = Z_OBJ_HANDLER_P(op1, get)(op1, &rv TSRMLS_CC);
Z_ADDREF_P(val);
@@ -2174,7 +2162,6 @@ try_again:
} else if (Z_OBJ_HANDLER_P(op1, do_operation)) {
zval op2;
int res;
- TSRMLS_FETCH();
ZVAL_LONG(&op2, 1);
res = Z_OBJ_HANDLER_P(op1, do_operation)(ZEND_ADD, op1, op1, &op2 TSRMLS_CC);
@@ -2239,7 +2226,6 @@ try_again:
/* proxy object */
zval rv;
zval *val;
- TSRMLS_FETCH();
val = Z_OBJ_HANDLER_P(op1, get)(op1, &rv TSRMLS_CC);
Z_ADDREF_P(val);
@@ -2249,7 +2235,6 @@ try_again:
} else if (Z_OBJ_HANDLER_P(op1, do_operation)) {
zval op2;
int res;
- TSRMLS_FETCH();
ZVAL_LONG(&op2, 1);
res = Z_OBJ_HANDLER_P(op1, do_operation)(ZEND_SUB, op1, op1, &op2 TSRMLS_CC);
@@ -2558,7 +2543,6 @@ ZEND_API void zend_compare_objects(zval *result, zval *o1, zval *o2 TSRMLS_DC) /
ZEND_API void zend_locale_sprintf_double(zval *op ZEND_FILE_LINE_DC) /* {{{ */
{
zend_string *str;
- TSRMLS_FETCH();
str = zend_strpprintf(0, "%.*G", (int) EG(precision), (double)Z_DVAL_P(op));
ZVAL_NEW_STR(op, str);
diff --git a/Zend/zend_signal.c b/Zend/zend_signal.c
index 6105fb1119..cf4c3179d1 100644
--- a/Zend/zend_signal.c
+++ b/Zend/zend_signal.c
@@ -74,7 +74,6 @@ void zend_signal_handler_defer(int signo, siginfo_t *siginfo, void *context)
{
int errno_save = errno;
zend_signal_queue_t *queue, *qtmp;
- TSRMLS_FETCH();
if (SIGG(active)) {
if (SIGG(depth) == 0) { /* try to handle signal */
diff --git a/Zend/zend_signal.h b/Zend/zend_signal.h
index 02d6495437..8e99a50bbb 100644
--- a/Zend/zend_signal.h
+++ b/Zend/zend_signal.h
@@ -65,7 +65,7 @@ typedef struct _zend_signal_globals_t {
} zend_signal_globals_t;
#ifdef ZTS
-# define SIGG(v) TSRMG(zend_signal_globals_id, zend_signal_globals_t *, v)
+# define SIGG(v) ZEND_TSRMG(zend_signal_globals_id, zend_signal_globals_t *, v)
BEGIN_EXTERN_C()
ZEND_API extern int zend_signal_globals_id;
END_EXTERN_C()
diff --git a/Zend/zend_variables.c b/Zend/zend_variables.c
index 3e68a38487..f200f00e65 100644
--- a/Zend/zend_variables.c
+++ b/Zend/zend_variables.c
@@ -39,7 +39,6 @@ ZEND_API void _zval_dtor_func(zend_refcounted *p ZEND_FILE_LINE_DC)
}
case IS_ARRAY: {
zend_array *arr = (zend_array*)p;
- TSRMLS_FETCH();
if (arr != &EG(symbol_table)) {
/* break possible cycles */
@@ -59,14 +58,12 @@ ZEND_API void _zval_dtor_func(zend_refcounted *p ZEND_FILE_LINE_DC)
}
case IS_OBJECT: {
zend_object *obj = (zend_object*)p;
- TSRMLS_FETCH();
OBJ_RELEASE(obj);
break;
}
case IS_RESOURCE: {
zend_resource *res = (zend_resource*)p;
- TSRMLS_FETCH();
if (--GC_REFCOUNT(res) == 0) {
/* destroy resource */
@@ -99,7 +96,6 @@ ZEND_API void _zval_dtor_func_for_ptr(zend_refcounted *p ZEND_FILE_LINE_DC)
}
case IS_ARRAY: {
zend_array *arr = (zend_array*)p;
- TSRMLS_FETCH();
if (arr != &EG(symbol_table)) {
/* break possible cycles */
@@ -119,14 +115,12 @@ ZEND_API void _zval_dtor_func_for_ptr(zend_refcounted *p ZEND_FILE_LINE_DC)
}
case IS_OBJECT: {
zend_object *obj = (zend_object*)p;
- TSRMLS_FETCH();
zend_objects_store_del(obj TSRMLS_CC);
break;
}
case IS_RESOURCE: {
zend_resource *res = (zend_resource*)p;
- TSRMLS_FETCH();
/* destroy resource */
zend_list_free(res);
@@ -238,7 +232,6 @@ ZEND_API void _zval_copy_ctor_func(zval *zvalue ZEND_FILE_LINE_DC)
break;
case IS_ARRAY: {
HashTable *ht;
- TSRMLS_FETCH();
if (Z_ARR_P(zvalue) == &EG(symbol_table)) {
return; /* do nothing */
diff --git a/Zend/zend_virtual_cwd.h b/Zend/zend_virtual_cwd.h
index 96ac6faa30..ec2875f068 100644
--- a/Zend/zend_virtual_cwd.h
+++ b/Zend/zend_virtual_cwd.h
@@ -237,7 +237,7 @@ typedef struct _virtual_cwd_globals {
#ifdef ZTS
extern ts_rsrc_id cwd_globals_id;
-# define CWDG(v) TSRMG(cwd_globals_id, virtual_cwd_globals *, v)
+# define CWDG(v) ZEND_TSRMG(cwd_globals_id, virtual_cwd_globals *, v)
#else
extern virtual_cwd_globals cwd_globals;
# define CWDG(v) (cwd_globals.v)
diff --git a/acinclude.m4 b/acinclude.m4
index 678296aac7..a4d4d509e0 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -2736,7 +2736,7 @@ AC_DEFUN([PHP_CHECK_CONFIGURE_OPTIONS],[
enable-libtool-lock | with-pic | with-tags | enable-shared | enable-static | enable-fast-install | with-gnu-ld[)];;
# Allow certain TSRM options
- with-tsrm-pth | with-tsrm-st | with-tsrm-pthreads[)];;
+ with-tsrm-pth | with-tsrm-st | with-tsrm-pthreads [)];;
# Allow certain Zend options
with-zend-vm | enable-maintainer-zts | enable-inline-optimization[)];;
diff --git a/configure.in b/configure.in
index f947d2f9de..5366a9211d 100644
--- a/configure.in
+++ b/configure.in
@@ -1491,7 +1491,8 @@ PHP_ADD_SOURCES(Zend, \
zend_iterators.c zend_interfaces.c zend_exceptions.c zend_strtod.c zend_gc.c \
zend_closures.c zend_float.c zend_string.c zend_signal.c zend_generators.c \
zend_virtual_cwd.c zend_ast.c zend_objects.c zend_object_handlers.c zend_objects_API.c \
- zend_default_classes.c zend_inheritance.c)
+ zend_default_classes.c zend_inheritance.c, \
+ -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)
dnl Selectively disable optimization due to high RAM usage during
dnl compiling the executor.
diff --git a/ext/com_dotnet/com_persist.c b/ext/com_dotnet/com_persist.c
index eb80e760c8..d47fbad5df 100644
--- a/ext/com_dotnet/com_persist.c
+++ b/ext/com_dotnet/com_persist.c
@@ -55,7 +55,6 @@ static void istream_dtor(zend_resource *rsrc TSRMLS_DC)
#define FETCH_STM() \
php_istream *stm = (php_istream*)This; \
- TSRMLS_FETCH(); \
if (GetCurrentThreadId() != stm->engine_thread) \
return RPC_E_WRONG_THREAD;
diff --git a/ext/com_dotnet/com_wrapper.c b/ext/com_dotnet/com_wrapper.c
index 6112dfb4bf..9e14c99e10 100644
--- a/ext/com_dotnet/com_wrapper.c
+++ b/ext/com_dotnet/com_wrapper.c
@@ -88,7 +88,6 @@ static inline void trace(char *fmt, ...)
#define FETCH_DISP(methname) \
php_dispatchex *disp = (php_dispatchex*)This; \
- TSRMLS_FETCH(); \
if (COMG(rshutdown_started)) { \
trace(" PHP Object:%p (name:unknown) %s\n", Z_OBJ(disp->object), methname); \
} else { \
diff --git a/ext/curl/interface.c b/ext/curl/interface.c
index 6caaa5258b..5c4a8800a3 100644
--- a/ext/curl/interface.c
+++ b/ext/curl/interface.c
@@ -1279,7 +1279,6 @@ static size_t curl_write(char *data, size_t size, size_t nmemb, void *ctx)
php_curl *ch = (php_curl *) ctx;
php_curl_write *t = ch->handlers->write;
size_t length = size * nmemb;
- TSRMLS_FETCH_FROM_CTX(ch->thread_ctx);
#if PHP_CURL_DEBUG
fprintf(stderr, "curl_write() called\n");
@@ -1354,7 +1353,6 @@ static int curl_fnmatch(void *ctx, const char *pattern, const char *string)
zval retval;
int error;
zend_fcall_info fci;
- TSRMLS_FETCH_FROM_CTX(ch->thread_ctx);
ZVAL_RES(&argv[0], ch->res);
Z_ADDREF(argv[0]);
@@ -1412,7 +1410,6 @@ static size_t curl_progress(void *clientp, double dltotal, double dlnow, double
zval retval;
int error;
zend_fcall_info fci;
- TSRMLS_FETCH_FROM_CTX(ch->thread_ctx);
ZVAL_RES(&argv[0], ch->res);
Z_ADDREF(argv[0]);
@@ -1475,7 +1472,6 @@ static size_t curl_read(char *data, size_t size, size_t nmemb, void *ctx)
zval retval;
int error;
zend_fcall_info fci;
- TSRMLS_FETCH_FROM_CTX(ch->thread_ctx);
ZVAL_RES(&argv[0], ch->res);
Z_ADDREF(argv[0]);
@@ -1527,7 +1523,6 @@ static size_t curl_write_header(char *data, size_t size, size_t nmemb, void *ctx
php_curl *ch = (php_curl *) ctx;
php_curl_write *t = ch->handlers->write_header;
size_t length = size * nmemb;
- TSRMLS_FETCH_FROM_CTX(ch->thread_ctx);
switch (t->method) {
case PHP_CURL_STDOUT:
@@ -1617,7 +1612,6 @@ static size_t curl_passwd(void *ctx, char *prompt, char *buf, int buflen)
zval retval;
int error;
int ret = -1;
- TSRMLS_FETCH_FROM_CTX(ch->thread_ctx);
ZVAL_RES(&argv[0], ch->res);
Z_ADDREF(argv[0]);
diff --git a/ext/curl/multi.c b/ext/curl/multi.c
index d9e6df2c98..e00f459902 100644
--- a/ext/curl/multi.c
+++ b/ext/curl/multi.c
@@ -100,7 +100,6 @@ void _php_curl_multi_cleanup_list(void *data) /* {{{ */
{
zval *z_ch = (zval *)data;
php_curl *ch;
- TSRMLS_FETCH();
if (!z_ch) {
return;
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index f2ced7bd59..580684c579 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -923,7 +923,6 @@ static timelib_tzinfo *php_date_parse_tzfile(char *formal_tzname, const timelib_
timelib_tzinfo *php_date_parse_tzfile_wrapper(char *formal_tzname, const timelib_tzdb *tzdb)
{
- TSRMLS_FETCH();
return php_date_parse_tzfile(formal_tzname, tzdb TSRMLS_CC);
}
/* }}} */
diff --git a/ext/dba/dba_db3.c b/ext/dba/dba_db3.c
index 3f31222d9e..cb3520f874 100644
--- a/ext/dba/dba_db3.c
+++ b/ext/dba/dba_db3.c
@@ -37,8 +37,6 @@
static void php_dba_db3_errcall_fcn(const char *errpfx, char *msg)
{
- TSRMLS_FETCH();
-
php_error_docref(NULL TSRMLS_CC, E_NOTICE, "%s%s", errpfx?errpfx:"", msg);
}
diff --git a/ext/dba/dba_db4.c b/ext/dba/dba_db4.c
index a9752a7bf6..eeea2db3a5 100644
--- a/ext/dba/dba_db4.c
+++ b/ext/dba/dba_db4.c
@@ -42,8 +42,6 @@ static void php_dba_db4_errcall_fcn(
#endif
const char *errpfx, const char *msg)
{
- TSRMLS_FETCH();
-
#if (DB_VERSION_MAJOR == 5 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 8))
/* Bug 51086, Berkeley DB 4.8.26 */
/* This code suppresses a BDB 4.8+ error message, thus keeping PHP test compatibility */
diff --git a/ext/dom/xpath.c b/ext/dom/xpath.c
index 336365e342..fddf7da423 100644
--- a/ext/dom/xpath.c
+++ b/ext/dom/xpath.c
@@ -82,8 +82,6 @@ static void dom_xpath_ext_function_php(xmlXPathParserContextPtr ctxt, int nargs,
char *str;
zend_string *callable = NULL;
dom_xpath_object *intern;
-
- TSRMLS_FETCH();
if (! zend_is_executing(TSRMLS_C)) {
xmlGenericError(xmlGenericErrorContext,
diff --git a/ext/fileinfo/libmagic/apprentice.c b/ext/fileinfo/libmagic/apprentice.c
index c1dc5aa1fa..732ed8babb 100644
--- a/ext/fileinfo/libmagic/apprentice.c
+++ b/ext/fileinfo/libmagic/apprentice.c
@@ -960,8 +960,6 @@ load_1(struct magic_set *ms, int action, const char *fn, int *errs,
php_stream *stream;
- TSRMLS_FETCH();
-
ms->file = fn;
stream = php_stream_open_wrapper((char *)fn, "rb", REPORT_ERRORS, NULL);
@@ -1151,8 +1149,6 @@ apprentice_load(struct magic_set *ms, const char *fn, int action)
php_stream *dir;
php_stream_dirent d;
- TSRMLS_FETCH();
-
memset(mset, 0, sizeof(mset));
ms->flags |= MAGIC_CHECK; /* Enable checks for parsed files */
@@ -2607,9 +2603,6 @@ apprentice_map(struct magic_set *ms, const char *fn)
php_stream *stream = NULL;
php_stream_statbuf st;
-
- TSRMLS_FETCH();
-
if ((map = CAST(struct magic_map *, ecalloc(1, sizeof(*map)))) == NULL) {
file_oomem(ms, sizeof(*map));
efree(map);
@@ -2761,8 +2754,6 @@ apprentice_compile(struct magic_set *ms, struct magic_map *map, const char *fn)
uint32_t i;
php_stream *stream;
- TSRMLS_FETCH();
-
dbname = mkdbname(ms, fn, 0);
if (dbname == NULL)
@@ -2820,7 +2811,6 @@ mkdbname(struct magic_set *ms, const char *fn, int strip)
{
const char *p, *q;
char *buf;
- TSRMLS_FETCH();
if (strip) {
if ((p = strrchr(fn, '/')) != NULL)
diff --git a/ext/fileinfo/libmagic/fsmagic.c b/ext/fileinfo/libmagic/fsmagic.c
index a7b420ff5d..0f6f4acbdf 100644
--- a/ext/fileinfo/libmagic/fsmagic.c
+++ b/ext/fileinfo/libmagic/fsmagic.c
@@ -94,7 +94,6 @@ file_fsmagic(struct magic_set *ms, const char *fn, zend_stat_t *sb, php_stream *
{
int ret, did = 0;
int mime = ms->flags & MAGIC_MIME;
- TSRMLS_FETCH();
if (ms->flags & MAGIC_APPLE)
return 0;
diff --git a/ext/fileinfo/libmagic/funcs.c b/ext/fileinfo/libmagic/funcs.c
index c7d9a7e4f1..252cc34589 100644
--- a/ext/fileinfo/libmagic/funcs.c
+++ b/ext/fileinfo/libmagic/funcs.c
@@ -221,7 +221,7 @@ file_buffer(struct magic_set *ms, php_stream *stream, const char *inname, const
/* Check if we have a CDF file */
if ((ms->flags & MAGIC_NO_CHECK_CDF) == 0) {
php_socket_t fd;
- TSRMLS_FETCH();
+
if (stream && SUCCESS == php_stream_cast(stream, PHP_STREAM_AS_FD, (void **)&fd, 0)) {
if ((m = file_trycdf(ms, fd, ubuf, nb)) != 0) {
if ((ms->flags & MAGIC_DEBUG) != 0)
@@ -445,7 +445,6 @@ file_replace(struct magic_set *ms, const char *pat, const char *rep)
zend_string *res;
zval repl;
int rep_cnt = 0;
- TSRMLS_FETCH();
(void)setlocale(LC_CTYPE, "C");
diff --git a/ext/fileinfo/libmagic/magic.c b/ext/fileinfo/libmagic/magic.c
index 7f5cff6a7b..5aeb0084cb 100644
--- a/ext/fileinfo/libmagic/magic.c
+++ b/ext/fileinfo/libmagic/magic.c
@@ -353,7 +353,6 @@ file_or_stream(struct magic_set *ms, const char *inname, php_stream *stream)
zend_stat_t sb;
ssize_t nbytes = 0; /* number of bytes read from a datafile */
int no_in_stream = 0;
- TSRMLS_FETCH();
if (!inname && !stream) {
return NULL;
diff --git a/ext/fileinfo/libmagic/print.c b/ext/fileinfo/libmagic/print.c
index eb4e6e8ce4..f21ca9c711 100644
--- a/ext/fileinfo/libmagic/print.c
+++ b/ext/fileinfo/libmagic/print.c
@@ -60,7 +60,6 @@ file_magwarn(struct magic_set *ms, const char *f, ...)
{
va_list va;
char *expanded_format;
- TSRMLS_FETCH();
va_start(va, f);
if (vasprintf(&expanded_format, f, va)); /* silence */
diff --git a/ext/fileinfo/libmagic/softmagic.c b/ext/fileinfo/libmagic/softmagic.c
index e626929c9e..40f6a52b83 100644
--- a/ext/fileinfo/libmagic/softmagic.c
+++ b/ext/fileinfo/libmagic/softmagic.c
@@ -360,7 +360,6 @@ check_fmt(struct magic_set *ms, struct magic *m)
int re_options, rv = -1;
pcre_extra *re_extra;
zend_string *pattern;
- TSRMLS_FETCH();
if (strchr(m->desc, '%') == NULL)
return 0;
@@ -2079,7 +2078,6 @@ magiccheck(struct magic_set *ms, struct magic *m)
zval pattern;
int options = 0;
pcre_cache_entry *pce;
- TSRMLS_FETCH();
options |= PCRE_MULTILINE;
diff --git a/ext/ftp/ftp.c b/ext/ftp/ftp.c
index a5341080b8..69afa559ad 100644
--- a/ext/ftp/ftp.c
+++ b/ext/ftp/ftp.c
@@ -179,7 +179,6 @@ ftp_close(ftpbuf_t *ftp)
data_close(ftp, ftp->data);
}
if (ftp->stream && ftp->closestream) {
- TSRMLS_FETCH();
php_stream_close(ftp->stream);
}
if (ftp->fd != -1) {
diff --git a/ext/gd/gd.c b/ext/gd/gd.c
index 54d0254c01..c08f9d4271 100644
--- a/ext/gd/gd.c
+++ b/ext/gd/gd.c
@@ -1097,8 +1097,6 @@ static void php_free_gd_font(zend_resource *rsrc TSRMLS_DC)
*/
void php_gd_error_method(int type, const char *format, va_list args)
{
- TSRMLS_FETCH();
-
php_verror(NULL, "", type, format, args TSRMLS_CC);
}
/* }}} */
@@ -4357,7 +4355,6 @@ static void _php_image_bw_convert(gdImagePtr im_org, gdIOCtx *out, int threshold
int dest_height = gdImageSY(im_org);
int dest_width = gdImageSX(im_org);
int x, y;
- TSRMLS_FETCH();
im_dest = gdImageCreate(dest_width, dest_height);
if (im_dest == NULL) {
diff --git a/ext/gd/gd_compat.c b/ext/gd/gd_compat.c
index dc6a95ae11..ff21034ae7 100644
--- a/ext/gd/gd_compat.c
+++ b/ext/gd/gd_compat.c
@@ -48,8 +48,6 @@ const char * gdPngGetVersionString()
int overflow2(int a, int b)
{
- TSRMLS_FETCH();
-
if(a <= 0 || b <= 0) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "gd warning: one parameter to a memory allocation multiplication is negative or zero, failing operation gracefully\n");
return 1;
diff --git a/ext/gd/gd_ctx.c b/ext/gd/gd_ctx.c
index 0b79cb6f0d..73f4848eeb 100644
--- a/ext/gd/gd_ctx.c
+++ b/ext/gd/gd_ctx.c
@@ -29,13 +29,11 @@ static void _php_image_output_putc(struct gdIOCtx *ctx, int c) /* {{{ */
* big endian architectures:
*/
unsigned char ch = (unsigned char) c;
- TSRMLS_FETCH();
php_write(&ch, 1 TSRMLS_CC);
} /* }}} */
static int _php_image_output_putbuf(struct gdIOCtx *ctx, const void* buf, int l) /* {{{ */
{
- TSRMLS_FETCH();
return php_write((void *)buf, l TSRMLS_CC);
} /* }}} */
@@ -49,21 +47,19 @@ static void _php_image_output_ctxfree(struct gdIOCtx *ctx) /* {{{ */
static void _php_image_stream_putc(struct gdIOCtx *ctx, int c) /* {{{ */ {
char ch = (char) c;
php_stream * stream = (php_stream *)ctx->data;
- TSRMLS_FETCH();
+
php_stream_write(stream, &ch, 1);
} /* }}} */
static int _php_image_stream_putbuf(struct gdIOCtx *ctx, const void* buf, int l) /* {{{ */
{
php_stream * stream = (php_stream *)ctx->data;
- TSRMLS_FETCH();
+
return php_stream_write(stream, (void *)buf, l);
} /* }}} */
static void _php_image_stream_ctxfree(struct gdIOCtx *ctx) /* {{{ */
{
- TSRMLS_FETCH();
-
if(ctx->data) {
php_stream_close((php_stream *) ctx->data);
ctx->data = NULL;
diff --git a/ext/gd/libgd/gd.c b/ext/gd/libgd/gd.c
index 54890bc177..6c8db37008 100644
--- a/ext/gd/libgd/gd.c
+++ b/ext/gd/libgd/gd.c
@@ -102,8 +102,6 @@ void php_gd_error_ex(int type, const char *format, ...)
{
va_list args;
- TSRMLS_FETCH();
-
va_start(args, format);
php_verror(NULL, "", type, format, args TSRMLS_CC);
va_end(args);
@@ -113,8 +111,6 @@ void php_gd_error(const char *format, ...)
{
va_list args;
- TSRMLS_FETCH();
-
va_start(args, format);
php_verror(NULL, "", E_WARNING, format, args TSRMLS_CC);
va_end(args);
diff --git a/ext/gd/libgd/gdft.c b/ext/gd/libgd/gdft.c
index 4148cf47bb..7737fb1801 100644
--- a/ext/gd/libgd/gdft.c
+++ b/ext/gd/libgd/gdft.c
@@ -412,7 +412,6 @@ static void *fontFetch (char **error, void *key)
for (dir = gd_strtok_r (path, PATHSEPARATOR, &strtok_ptr_path); dir;
dir = gd_strtok_r (0, PATHSEPARATOR, &strtok_ptr_path)) {
if (!strcmp(dir, ".")) {
- TSRMLS_FETCH();
#if HAVE_GETCWD
dir = VCWD_GETCWD(cur_dir, MAXPATHLEN);
#elif HAVE_GETWD
diff --git a/ext/gd/libgd/gdkanji.c b/ext/gd/libgd/gdkanji.c
index 37f3bd10a0..84096cd3f8 100644
--- a/ext/gd/libgd/gdkanji.c
+++ b/ext/gd/libgd/gdkanji.c
@@ -74,7 +74,6 @@ error (const char *format,...)
{
va_list args;
char *tmp;
- TSRMLS_FETCH();
va_start(args, format);
vspprintf(&tmp, 0, format, args);
diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c
index d425f6cf1e..17f9ba5aaa 100644
--- a/ext/iconv/iconv.c
+++ b/ext/iconv/iconv.c
@@ -395,7 +395,6 @@ static int php_iconv_output_handler(void **nothing, php_output_context *output_c
{
char *s, *content_type, *mimetype = NULL;
int output_status, mimetype_len = 0;
- PHP_OUTPUT_TSRMLS(output_context);
if (output_context->op & PHP_OUTPUT_HANDLER_START) {
output_status = php_output_get_status(TSRMLS_C);
diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c
index 8dc56c5223..460303d0ea 100644
--- a/ext/imap/php_imap.c
+++ b/ext/imap/php_imap.c
@@ -760,7 +760,6 @@ void mail_free_messagelist(MESSAGELIST **msglist, MESSAGELIST **tail)
void mail_getquota(MAILSTREAM *stream, char *qroot, QUOTALIST *qlist)
{
zval t_map, *return_value;
- TSRMLS_FETCH();
return_value = *IMAPG(quota_return);
@@ -788,8 +787,6 @@ void mail_getquota(MAILSTREAM *stream, char *qroot, QUOTALIST *qlist)
*/
void mail_getacl(MAILSTREAM *stream, char *mailbox, ACLLIST *alist)
{
- TSRMLS_FETCH();
-
/* walk through the ACLLIST */
for(; alist; alist = alist->next) {
add_assoc_stringl(IMAPG(imap_acl_list), alist->identifier, alist->rights, strlen(alist->rights));
@@ -4764,8 +4761,6 @@ PHP_FUNCTION(imap_timeout)
#define GETS_FETCH_SIZE 8196LU
static char *php_mail_gets(readfn_t f, void *stream, unsigned long size, GETS_DATA *md) /* {{{ */
{
- TSRMLS_FETCH();
-
/* write to the gets stream if it is set,
otherwise forward to c-clients gets */
if (IMAPG(gets_stream)) {
@@ -4811,7 +4806,6 @@ static char *php_mail_gets(readfn_t f, void *stream, unsigned long size, GETS_DA
PHP_IMAP_EXPORT void mm_searched(MAILSTREAM *stream, unsigned long number)
{
MESSAGELIST *cur = NIL;
- TSRMLS_FETCH();
if (IMAPG(imap_messages) == NIL) {
IMAPG(imap_messages) = mail_newmessagelist();
@@ -4844,7 +4838,6 @@ PHP_IMAP_EXPORT void mm_flags(MAILSTREAM *stream, unsigned long number)
PHP_IMAP_EXPORT void mm_notify(MAILSTREAM *stream, char *str, long errflg)
{
STRINGLIST *cur = NIL;
- TSRMLS_FETCH();
if (strncmp(str, "[ALERT] ", 8) == 0) {
if (IMAPG(imap_alertstack) == NIL) {
@@ -4868,7 +4861,6 @@ PHP_IMAP_EXPORT void mm_list(MAILSTREAM *stream, DTYPE delimiter, char *mailbox,
{
STRINGLIST *cur=NIL;
FOBJECTLIST *ocur=NIL;
- TSRMLS_FETCH();
if (IMAPG(folderlist_style) == FLIST_OBJECT) {
/* build up a the new array of objects */
@@ -4915,7 +4907,6 @@ PHP_IMAP_EXPORT void mm_lsub(MAILSTREAM *stream, DTYPE delimiter, char *mailbox,
{
STRINGLIST *cur=NIL;
FOBJECTLIST *ocur=NIL;
- TSRMLS_FETCH();
if (IMAPG(folderlist_style) == FLIST_OBJECT) {
/* build the array of objects */
@@ -4957,8 +4948,6 @@ PHP_IMAP_EXPORT void mm_lsub(MAILSTREAM *stream, DTYPE delimiter, char *mailbox,
PHP_IMAP_EXPORT void mm_status(MAILSTREAM *stream, char *mailbox, MAILSTATUS *status)
{
- TSRMLS_FETCH();
-
IMAPG(status_flags)=status->flags;
if (IMAPG(status_flags) & SA_MESSAGES) {
IMAPG(status_messages)=status->messages;
@@ -4980,7 +4969,6 @@ PHP_IMAP_EXPORT void mm_status(MAILSTREAM *stream, char *mailbox, MAILSTATUS *st
PHP_IMAP_EXPORT void mm_log(char *str, long errflg)
{
ERRORLIST *cur = NIL;
- TSRMLS_FETCH();
/* Author: CJH */
if (errflg != NIL) { /* CJH: maybe put these into a more comprehensive log for debugging purposes? */
@@ -5012,8 +5000,6 @@ PHP_IMAP_EXPORT void mm_dlog(char *str)
PHP_IMAP_EXPORT void mm_login(NETMBX *mb, char *user, char *pwd, long trial)
{
- TSRMLS_FETCH();
-
if (*mb->user) {
strlcpy (user, mb->user, MAILTMPLEN);
} else {
diff --git a/ext/intl/collator/collator_convert.c b/ext/intl/collator/collator_convert.c
index bc279b25f7..76dc9a4cc3 100644
--- a/ext/intl/collator/collator_convert.c
+++ b/ext/intl/collator/collator_convert.c
@@ -400,8 +400,6 @@ zval* collator_make_printable_zval( zval* arg, zval *rv)
if( Z_TYPE_P(arg) != IS_STRING )
{
- TSRMLS_FETCH();
-
use_copy = zend_make_printable_zval(arg, &arg_copy TSRMLS_CC);
if( use_copy )
diff --git a/ext/intl/converter/converter.c b/ext/intl/converter/converter.c
index b27652aa9a..eb37ce00f1 100644
--- a/ext/intl/converter/converter.c
+++ b/ext/intl/converter/converter.c
@@ -24,9 +24,6 @@
#include "../intl_error.h"
typedef struct _php_converter_object {
-#ifdef ZTS
- void ***tsrm_ls;
-#endif
UConverter *src, *dest;
zend_fcall_info to_cb, from_cb;
zend_fcall_info_cache to_cache, from_cache;
@@ -229,9 +226,6 @@ static void php_converter_to_u_callback(const void *context,
php_converter_object *objval = (php_converter_object*)context;
zval retval;
zval zargs[4];
-#ifdef ZTS
- TSRMLS_D = objval->tsrm_ls;
-#endif
ZVAL_LONG(&zargs[0], reason);
ZVAL_STRINGL(&zargs[1], args->source, args->sourceLimit - args->source);
@@ -308,9 +302,6 @@ static void php_converter_from_u_callback(const void *context,
zval retval;
zval zargs[4];
int i;
-#ifdef ZTS
- TSRMLS_D = objval->tsrm_ls;
-#endif
ZVAL_LONG(&zargs[0], reason);
array_init(&zargs[1]);
@@ -1045,9 +1036,6 @@ static zend_object *php_converter_object_ctor(zend_class_entry *ce, php_converte
objval = ecalloc(1, sizeof(php_converter_object) + sizeof(zval) * (ce->default_properties_count - 1));
zend_object_std_init(&objval->obj, ce TSRMLS_CC );
-#ifdef ZTS
- objval->tsrm_ls = TSRMLS_C;
-#endif
intl_error_init(&(objval->error) TSRMLS_CC);
objval->obj.handlers = &php_converter_object_handlers;
diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c
index f74de699ee..efa59c4c68 100644
--- a/ext/ldap/ldap.c
+++ b/ext/ldap/ldap.c
@@ -2433,7 +2433,6 @@ int _ldap_rebind_proc(LDAP *ldap, const char *url, ber_tag_t req, ber_int_t msgi
zval cb_args[2];
zval cb_retval;
zval *cb_link = (zval *) params;
- TSRMLS_FETCH();
ld = (ldap_linkdata *) zend_fetch_resource(cb_link TSRMLS_CC, -1, "ldap link", NULL, 1, le_link);
diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c
index d9e92541e9..25f5ac08b9 100644
--- a/ext/libxml/libxml.c
+++ b/ext/libxml/libxml.c
@@ -302,8 +302,6 @@ static void *php_libxml_streams_IO_open_wrapper(const char *filename, const char
int isescaped=0;
xmlURI *uri;
- TSRMLS_FETCH();
-
uri = xmlParseURI(filename);
if (uri && (uri->scheme == NULL ||
(xmlStrncmp(BAD_CAST uri->scheme, BAD_CAST "file", 4) == 0))) {
@@ -358,19 +356,16 @@ static void *php_libxml_streams_IO_open_write_wrapper(const char *filename)
static int php_libxml_streams_IO_read(void *context, char *buffer, int len)
{
- TSRMLS_FETCH();
return php_stream_read((php_stream*)context, buffer, len);
}
static int php_libxml_streams_IO_write(void *context, const char *buffer, int len)
{
- TSRMLS_FETCH();
return php_stream_write((php_stream*)context, buffer, len);
}
static int php_libxml_streams_IO_close(void *context)
{
- TSRMLS_FETCH();
return php_stream_close((php_stream*)context);
}
@@ -379,7 +374,6 @@ php_libxml_input_buffer_create_filename(const char *URI, xmlCharEncoding enc)
{
xmlParserInputBufferPtr ret;
void *context = NULL;
- TSRMLS_FETCH();
if (LIBXML(entity_loader_disabled)) {
return NULL;
@@ -463,8 +457,6 @@ static void _php_list_set_error_structure(xmlErrorPtr error, const char *msg)
xmlError error_copy;
int ret;
- TSRMLS_FETCH();
-
memset(&error_copy, 0, sizeof(xmlError));
if (error) {
@@ -520,8 +512,6 @@ static void php_libxml_internal_error_handler(int error_type, void *ctx, const c
char *buf;
int len, len_iter, output = 0;
- TSRMLS_FETCH();
-
len = vspprintf(&buf, 0, *msg, ap);
len_iter = len;
@@ -563,7 +553,6 @@ static xmlParserInputPtr _php_libxml_external_entity_loader(const char *URL,
zval params[3];
int status;
zend_fcall_info *fci;
- TSRMLS_FETCH();
fci = &LIBXML(entity_loader).fci;
@@ -680,8 +669,6 @@ is_string:
static xmlParserInputPtr _php_libxml_pre_ext_ent_loader(const char *URL,
const char *ID, xmlParserCtxtPtr context)
{
- TSRMLS_FETCH();
-
/* Check whether we're running in a PHP context, since the entity loader
* we've defined is an application level (true global) setting.
* If we are, we also want to check whether we've finished activating
@@ -889,7 +876,6 @@ static PHP_MSHUTDOWN_FUNCTION(libxml)
static int php_libxml_post_deactivate(void)
{
- TSRMLS_FETCH();
/* reset libxml generic error handling */
if (_php_libxml_per_request_initialization) {
xmlSetGenericErrorFunc(NULL, NULL);
diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c
index 878c8fb946..9a67d80103 100644
--- a/ext/mysqli/mysqli.c
+++ b/ext/mysqli/mysqli.c
@@ -89,7 +89,7 @@ static void free_prop_handler(zval *el) {
void php_mysqli_dtor_p_elements(void *data)
{
MYSQL *mysql = (MYSQL *)data;
- TSRMLS_FETCH();
+
mysqli_close(mysql, MYSQLI_CLOSE_IMPLICIT);
}
@@ -930,7 +930,6 @@ PHP_RINIT_FUNCTION(mysqli)
#if defined(A0) && defined(MYSQLI_USE_MYSQLND)
static void php_mysqli_persistent_helper_for_every(void *p)
{
- TSRMLS_FETCH();
mysqlnd_end_psession((MYSQLND *) p);
} /* }}} */
diff --git a/ext/mysqlnd/mysqlnd_debug.c b/ext/mysqlnd/mysqlnd_debug.c
index f1fde4efbb..c8f682b8e2 100644
--- a/ext/mysqlnd/mysqlnd_debug.c
+++ b/ext/mysqlnd/mysqlnd_debug.c
@@ -39,8 +39,6 @@ static const char * const mysqlnd_debug_empty_string = "";
static enum_func_status
MYSQLND_METHOD(mysqlnd_debug, open)(MYSQLND_DEBUG * self, zend_bool reopen)
{
- MYSQLND_ZTS(self);
-
if (!self->file_name) {
return FAIL;
}
@@ -67,7 +65,6 @@ MYSQLND_METHOD(mysqlnd_debug, log)(MYSQLND_DEBUG * self,
unsigned int flags = self->flags;
char pid_buffer[10], time_buffer[30], file_buffer[200],
line_buffer[6], level_buffer[7];
- MYSQLND_ZTS(self);
if (!self->stream && FAIL == self->m->open(self, FALSE)) {
return FAIL;
@@ -165,7 +162,6 @@ MYSQLND_METHOD(mysqlnd_debug, log_va)(MYSQLND_DEBUG *self,
unsigned int flags = self->flags;
char pid_buffer[10], time_buffer[30], file_buffer[200],
line_buffer[6], level_buffer[7];
- MYSQLND_ZTS(self);
if (!self->stream && FAIL == self->m->open(self, FALSE)) {
return FAIL;
@@ -436,7 +432,6 @@ MYSQLND_METHOD(mysqlnd_debug, func_leave)(MYSQLND_DEBUG * self, unsigned int lin
static enum_func_status
MYSQLND_METHOD(mysqlnd_debug, close)(MYSQLND_DEBUG * self)
{
- MYSQLND_ZTS(self);
if (self->stream) {
#ifndef MYSQLND_PROFILING_DISABLED
if (!(self->flags & MYSQLND_DEBUG_FLUSH) && (self->flags & MYSQLND_DEBUG_PROFILE_CALLS)) {
@@ -718,9 +713,7 @@ PHPAPI MYSQLND_DEBUG *
mysqlnd_debug_init(const char * skip_functions[] TSRMLS_DC)
{
MYSQLND_DEBUG *ret = calloc(1, sizeof(MYSQLND_DEBUG));
-#ifdef ZTS
- ret->TSRMLS_C = TSRMLS_C;
-#endif
+
ret->nest_level_limit = 0;
ret->pid = getpid();
zend_stack_init(&ret->call_stack, sizeof(char *));
diff --git a/ext/mysqlnd/mysqlnd_debug.h b/ext/mysqlnd/mysqlnd_debug.h
index bb4ff3e895..e8dfeb6c4a 100644
--- a/ext/mysqlnd/mysqlnd_debug.h
+++ b/ext/mysqlnd/mysqlnd_debug.h
@@ -45,9 +45,6 @@ struct st_mysqlnd_debug_methods
struct st_mysqlnd_debug
{
php_stream *stream;
-#ifdef ZTS
- TSRMLS_D;
-#endif
unsigned int flags;
unsigned int nest_level_limit;
int pid;
diff --git a/ext/mysqlnd/mysqlnd_driver.c b/ext/mysqlnd/mysqlnd_driver.c
index e67d023edb..a35474b9e6 100644
--- a/ext/mysqlnd/mysqlnd_driver.c
+++ b/ext/mysqlnd/mysqlnd_driver.c
@@ -99,9 +99,7 @@ static void
mysqlnd_error_list_pdtor(void * pDest)
{
MYSQLND_ERROR_LIST_ELEMENT * element = (MYSQLND_ERROR_LIST_ELEMENT *) pDest;
-#ifdef ZTS
- TSRMLS_FETCH();
-#endif
+
DBG_ENTER("mysqlnd_error_list_pdtor");
if (element->error) {
mnd_pefree(element->error, TRUE);
diff --git a/ext/mysqlnd/mysqlnd_plugin.c b/ext/mysqlnd/mysqlnd_plugin.c
index 3bb3c05147..2d909246d0 100644
--- a/ext/mysqlnd/mysqlnd_plugin.c
+++ b/ext/mysqlnd/mysqlnd_plugin.c
@@ -130,12 +130,10 @@ mysqlnd_plugin_subsystem_end(TSRMLS_D)
/* {{{ mysqlnd_plugin_register */
PHPAPI unsigned int mysqlnd_plugin_register()
{
- TSRMLS_FETCH();
return mysqlnd_plugin_register_ex(NULL TSRMLS_CC);
}
/* }}} */
-
/* {{{ mysqlnd_plugin_register_ex */
PHPAPI unsigned int mysqlnd_plugin_register_ex(struct st_mysqlnd_plugin_header * plugin TSRMLS_DC)
{
diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c
index 6729163996..fe8c88e7ad 100644
--- a/ext/odbc/php_odbc.c
+++ b/ext/odbc/php_odbc.c
@@ -521,7 +521,6 @@ static void _close_odbc_pconn(zend_resource *rsrc TSRMLS_DC)
static PHP_INI_DISP(display_link_nums)
{
char *value;
- TSRMLS_FETCH();
if (type == PHP_INI_DISPLAY_ORIG && ini_entry->modified) {
value = ini_entry->orig_value->val;
@@ -546,7 +545,6 @@ static PHP_INI_DISP(display_link_nums)
static PHP_INI_DISP(display_defPW)
{
char *value;
- TSRMLS_FETCH();
if (type == PHP_INI_DISPLAY_ORIG && ini_entry->modified) {
value = ini_entry->orig_value->val;
@@ -577,7 +575,6 @@ static PHP_INI_DISP(display_defPW)
static PHP_INI_DISP(display_binmode)
{
char *value;
- TSRMLS_FETCH();
if (type == PHP_INI_DISPLAY_ORIG && ini_entry->modified) {
value = ini_entry->orig_value->val;
@@ -608,7 +605,6 @@ static PHP_INI_DISP(display_binmode)
static PHP_INI_DISP(display_lrl)
{
char *value;
- TSRMLS_FETCH();
if (type == PHP_INI_DISPLAY_ORIG && ini_entry->modified) {
value = ini_entry->orig_value->val;
@@ -634,7 +630,6 @@ static PHP_INI_DISP(display_lrl)
static PHP_INI_DISP(display_cursortype)
{
char *value;
- TSRMLS_FETCH();
if (type == PHP_INI_DISPLAY_ORIG && ini_entry->modified) {
value = ini_entry->orig_value->val;
@@ -868,7 +863,6 @@ void odbc_sql_error(ODBC_SQL_ERROR_PARAMS)
RETCODE rc;
ODBC_SQL_ENV_T henv;
ODBC_SQL_CONN_T conn;
- TSRMLS_FETCH();
if (conn_resource) {
henv = conn_resource->henv;
diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c
index d36827bde6..beab9be59c 100644
--- a/ext/opcache/ZendAccelerator.c
+++ b/ext/opcache/ZendAccelerator.c
@@ -1821,8 +1821,6 @@ static void zend_reset_cache_vars(TSRMLS_D)
static void accel_activate(void)
{
- TSRMLS_FETCH();
-
if (!ZCG(enabled) || !accel_startup_ok) {
return;
}
@@ -1934,7 +1932,6 @@ static void accel_fast_zval_dtor(zval *zvalue)
if (Z_REFCOUNTED_P(zvalue) && Z_DELREF_P(zvalue) == 0) {
switch (Z_TYPE_P(zvalue)) {
case IS_ARRAY: {
- TSRMLS_FETCH();
GC_REMOVE_FROM_BUFFER(Z_ARR_P(zvalue));
if (Z_ARR_P(zvalue) != &EG(symbol_table)) {
/* break possible cycles */
@@ -1945,15 +1942,11 @@ static void accel_fast_zval_dtor(zval *zvalue)
break;
case IS_OBJECT:
{
- TSRMLS_FETCH();
-
OBJ_RELEASE(Z_OBJ_P(zvalue));
}
break;
case IS_RESOURCE:
{
- TSRMLS_FETCH();
-
/* destroy resource */
zend_list_delete(Z_RES_P(zvalue));
}
@@ -2089,7 +2082,6 @@ static void accel_deactivate(void)
* In general, they're restored by persistent_compile_file(), but in case
* the script is aborted abnormally, they may become messed up.
*/
- TSRMLS_FETCH();
if (!ZCG(enabled) || !accel_startup_ok) {
return;
@@ -2263,7 +2255,6 @@ static int accel_startup(zend_extension *extension)
{
zend_function *func;
zend_ini_entry *ini_entry;
- TSRMLS_FETCH();
#ifdef ZTS
accel_globals_id = ts_allocate_id(&accel_globals_id, sizeof(zend_accel_globals), (ts_allocate_ctor) accel_globals_ctor, (ts_allocate_dtor) accel_globals_dtor);
diff --git a/ext/opcache/shared_alloc_win32.c b/ext/opcache/shared_alloc_win32.c
index 37431fb18a..cab33b5b38 100644
--- a/ext/opcache/shared_alloc_win32.c
+++ b/ext/opcache/shared_alloc_win32.c
@@ -188,7 +188,6 @@ static int create_segments(size_t requested_size, zend_shared_segment ***shared_
void *vista_mapping_base_set[] = { (void *) 0x20000000, (void *) 0x21000000, (void *) 0x30000000, (void *) 0x31000000, (void *) 0x50000000, 0 };
#endif
void **wanted_mapping_base = default_mapping_base_set;
- TSRMLS_FETCH();
zend_shared_alloc_lock_win32();
/* Mapping retries: When Apache2 restarts, the parent process startup routine
diff --git a/ext/opcache/zend_accelerator_blacklist.c b/ext/opcache/zend_accelerator_blacklist.c
index 7263ed3c93..33aed3ce70 100644
--- a/ext/opcache/zend_accelerator_blacklist.c
+++ b/ext/opcache/zend_accelerator_blacklist.c
@@ -237,7 +237,6 @@ void zend_accel_blacklist_load(zend_blacklist *blacklist, char *filename)
char buf[MAXPATHLEN + 1], real_path[MAXPATHLEN + 1], *blacklist_path = NULL;
FILE *fp;
int path_length, blacklist_path_length;
- TSRMLS_FETCH();
if ((fp = fopen(filename, "r")) == NULL) {
zend_accel_error(ACCEL_LOG_WARNING, "Cannot load blacklist file: %s\n", filename);
diff --git a/ext/opcache/zend_accelerator_debug.c b/ext/opcache/zend_accelerator_debug.c
index 2a386b812b..feed711bf5 100644
--- a/ext/opcache/zend_accelerator_debug.c
+++ b/ext/opcache/zend_accelerator_debug.c
@@ -34,7 +34,6 @@ void zend_accel_error(int type, const char *format, ...)
time_t timestamp;
char *time_string;
FILE * fLog = NULL;
- TSRMLS_FETCH();
if (type > ZCG(accel_directives).log_verbosity_level) {
return;
diff --git a/ext/opcache/zend_accelerator_util_funcs.c b/ext/opcache/zend_accelerator_util_funcs.c
index ee7be50619..1d949e4db4 100644
--- a/ext/opcache/zend_accelerator_util_funcs.c
+++ b/ext/opcache/zend_accelerator_util_funcs.c
@@ -53,7 +53,6 @@ static zend_ast *zend_ast_clone(zend_ast *ast TSRMLS_DC);
static void zend_accel_destroy_zend_function(zval *zv)
{
zend_function *function = Z_PTR_P(zv);
- TSRMLS_FETCH();
if (function->type == ZEND_USER_FUNCTION) {
if (function->op_array.static_variables) {
@@ -353,7 +352,6 @@ static void zend_hash_clone_zval(HashTable *ht, HashTable *source, int bind)
uint idx;
Bucket *p, *q, *r;
zend_ulong nIndex;
- TSRMLS_FETCH();
ht->nTableSize = source->nTableSize;
ht->nTableMask = source->nTableMask;
@@ -606,7 +604,6 @@ static void zend_class_copy_ctor(zend_class_entry **pce)
zend_class_entry *old_ce = ce;
zend_class_entry *new_ce;
zend_function *new_func;
- TSRMLS_FETCH();
*pce = ce = ARENA_REALLOC(old_ce);
ce->refcount = 1;
diff --git a/ext/opcache/zend_shared_alloc.c b/ext/opcache/zend_shared_alloc.c
index 43a0263ee5..f3f7bd7d30 100644
--- a/ext/opcache/zend_shared_alloc.c
+++ b/ext/opcache/zend_shared_alloc.c
@@ -157,8 +157,6 @@ int zend_shared_alloc_startup(size_t requested_size)
const zend_shared_memory_handler_entry *he;
int res = ALLOC_FAILURE;
- TSRMLS_FETCH();
-
/* shared_free must be valid before we call zend_shared_alloc()
* - make it temporarily point to a local variable
*/
@@ -298,7 +296,6 @@ void *zend_shared_alloc(size_t size)
{
int i;
unsigned int block_size = ZEND_ALIGNED_SIZE(size);
- TSRMLS_FETCH();
#if 1
if (!ZCG(locked)) {
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
index c4b155b478..c565a7fac5 100755
--- a/ext/openssl/openssl.c
+++ b/ext/openssl/openssl.c
@@ -994,8 +994,6 @@ static int php_openssl_write_rand_file(const char * file, int egdsocket, int see
{
char buffer[MAXPATHLEN];
- TSRMLS_FETCH();
-
if (egdsocket || !seeded) {
/* if we did not manage to read the seed file, we should not write
* a low-entropy seed file back */
@@ -2058,7 +2056,6 @@ static STACK_OF(X509) * load_all_certs_from_file(char *certfile)
STACK_OF(X509) *stack=NULL, *ret=NULL;
BIO *in=NULL;
X509_INFO *xi;
- TSRMLS_FETCH();
if(!(stack = sk_X509_new_null())) {
php_error_docref(NULL TSRMLS_CC, E_ERROR, "memory allocation failure");
@@ -2111,7 +2108,6 @@ static int check_cert(X509_STORE *ctx, X509 *x, STACK_OF(X509) *untrustedchain,
{
int ret=0;
X509_STORE_CTX *csc;
- TSRMLS_FETCH();
csc = X509_STORE_CTX_new();
if (csc == NULL) {
diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c
index 54562c22e5..62c69c4a5a 100644
--- a/ext/openssl/xp_ssl.c
+++ b/ext/openssl/xp_ssl.c
@@ -232,8 +232,6 @@ static int verify_callback(int preverify_ok, X509_STORE_CTX *ctx) /* {{{ */
zval *val;
zend_ulong allowed_depth = OPENSSL_DEFAULT_STREAM_VERIFY_DEPTH;
- TSRMLS_FETCH();
-
ret = preverify_ok;
/* determine the status for the current cert */
@@ -534,8 +532,6 @@ static int win_cert_verify_callback(X509_STORE_CTX *x509_store_ctx, void *arg) /
zval *val;
zend_bool is_self_signed = 0;
- TSRMLS_FETCH();
-
stream = (php_stream*)arg;
sslsock = (php_openssl_netstream_data_t*)stream->abstract;
@@ -987,8 +983,6 @@ static void limit_handshake_reneg(const SSL *ssl) /* {{{ */
if (sslsock->reneg->tokens > sslsock->reneg->limit) {
zval *val;
- TSRMLS_FETCH();
-
sslsock->reneg->should_close = 1;
if (PHP_STREAM_CONTEXT(stream) && (val = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream),
diff --git a/ext/pcntl/pcntl.c b/ext/pcntl/pcntl.c
index 11ad1018ec..0086b383b9 100644
--- a/ext/pcntl/pcntl.c
+++ b/ext/pcntl/pcntl.c
@@ -1191,7 +1191,6 @@ PHP_FUNCTION(pcntl_strerror)
static void pcntl_signal_handler(int signo)
{
struct php_pcntl_pending_signal *psig;
- TSRMLS_FETCH();
psig = PCNTL_G(spares);
if (!psig) {
@@ -1219,7 +1218,6 @@ void pcntl_signal_dispatch()
struct php_pcntl_pending_signal *queue, *next;
sigset_t mask;
sigset_t old_mask;
- TSRMLS_FETCH();
/* Mask all signals */
sigfillset(&mask);
diff --git a/ext/pcntl/php_signal.c b/ext/pcntl/php_signal.c
index aa2139342c..f19c8a9a25 100644
--- a/ext/pcntl/php_signal.c
+++ b/ext/pcntl/php_signal.c
@@ -28,9 +28,7 @@
Sigfunc *php_signal4(int signo, Sigfunc *func, int restart, int mask_all)
{
struct sigaction act,oact;
-#ifdef ZEND_SIGNALS
- TSRMLS_FETCH();
-#endif
+
act.sa_handler = func;
if (mask_all) {
sigfillset(&act.sa_mask);
diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c
index 705d08bacf..4a958d92cf 100644
--- a/ext/pdo/pdo_stmt.c
+++ b/ext/pdo/pdo_stmt.c
@@ -274,7 +274,6 @@ static void param_dtor(zval *el) /* {{{ */
/* tell the driver that it is going away */
if (param->stmt->methods->param_hook) {
- TSRMLS_FETCH();
param->stmt->methods->param_hook(param->stmt, param, PDO_PARAM_EVT_FREE TSRMLS_CC);
}
diff --git a/ext/pdo_dblib/pdo_dblib.c b/ext/pdo_dblib/pdo_dblib.c
index 3afd885df5..67a1d7abaf 100644
--- a/ext/pdo_dblib/pdo_dblib.c
+++ b/ext/pdo_dblib/pdo_dblib.c
@@ -91,7 +91,6 @@ int error_handler(DBPROCESS *dbproc, int severity, int dberr,
{
pdo_dblib_err *einfo;
char *state = "HY000";
- TSRMLS_FETCH();
if(dbproc) {
einfo = (pdo_dblib_err*)dbgetuserdata(dbproc);
@@ -141,7 +140,6 @@ int msg_handler(DBPROCESS *dbproc, DBINT msgno, int msgstate,
int severity, char *msgtext, char *srvname, char *procname, DBUSMALLINT line)
{
pdo_dblib_err *einfo;
- TSRMLS_FETCH();
if (severity) {
einfo = (pdo_dblib_err*)dbgetuserdata(dbproc);
diff --git a/ext/pdo_oci/oci_statement.c b/ext/pdo_oci/oci_statement.c
index 7c86a23dcc..3551030ec4 100644
--- a/ext/pdo_oci/oci_statement.c
+++ b/ext/pdo_oci/oci_statement.c
@@ -188,7 +188,6 @@ static sb4 oci_bind_input_cb(dvoid *ctx, OCIBind *bindp, ub4 iter, ub4 index, dv
{
struct pdo_bound_param_data *param = (struct pdo_bound_param_data*)ctx;
pdo_oci_bound_param *P = (pdo_oci_bound_param*)param->driver_data;
- TSRMLS_FETCH();
if (!param || !param->parameter) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "param is NULL in oci_bind_input_cb; this should not happen");
@@ -220,7 +219,6 @@ static sb4 oci_bind_output_cb(dvoid *ctx, OCIBind *bindp, ub4 iter, ub4 index, d
{
struct pdo_bound_param_data *param = (struct pdo_bound_param_data*)ctx;
pdo_oci_bound_param *P = (pdo_oci_bound_param*)param->driver_data;
- TSRMLS_FETCH();
if (!param || !param->parameter) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "param is NULL in oci_bind_output_cb; this should not happen");
@@ -481,7 +479,6 @@ static sb4 oci_define_callback(dvoid *octxp, OCIDefine *define, ub4 iter, dvoid
ub4 **alenpp, ub1 *piecep, dvoid **indpp, ub2 **rcodepp)
{
pdo_oci_column *col = (pdo_oci_column*)octxp;
- TSRMLS_FETCH();
switch (col->dtype) {
case SQLT_BLOB:
diff --git a/ext/pdo_sqlite/sqlite_driver.c b/ext/pdo_sqlite/sqlite_driver.c
index 413b50b9d4..c5357081ed 100644
--- a/ext/pdo_sqlite/sqlite_driver.c
+++ b/ext/pdo_sqlite/sqlite_driver.c
@@ -448,7 +448,6 @@ static void php_sqlite3_func_callback(sqlite3_context *context, int argc,
sqlite3_value **argv)
{
struct pdo_sqlite_func *func = (struct pdo_sqlite_func*)sqlite3_user_data(context);
- TSRMLS_FETCH();
do_callback(&func->afunc, &func->func, argc, argv, context, 0 TSRMLS_CC);
}
@@ -457,7 +456,6 @@ static void php_sqlite3_func_step_callback(sqlite3_context *context, int argc,
sqlite3_value **argv)
{
struct pdo_sqlite_func *func = (struct pdo_sqlite_func*)sqlite3_user_data(context);
- TSRMLS_FETCH();
do_callback(&func->astep, &func->step, argc, argv, context, 1 TSRMLS_CC);
}
@@ -465,7 +463,6 @@ static void php_sqlite3_func_step_callback(sqlite3_context *context, int argc,
static void php_sqlite3_func_final_callback(sqlite3_context *context)
{
struct pdo_sqlite_func *func = (struct pdo_sqlite_func*)sqlite3_user_data(context);
- TSRMLS_FETCH();
do_callback(&func->afini, &func->fini, 0, NULL, context, 1 TSRMLS_CC);
}
@@ -478,7 +475,6 @@ static int php_sqlite3_collation_callback(void *context,
zval zargs[2];
zval retval;
struct pdo_sqlite_collation *collation = (struct pdo_sqlite_collation*) context;
- TSRMLS_FETCH();
collation->fc.fci.size = sizeof(collation->fc.fci);
collation->fc.fci.function_table = EG(function_table);
@@ -763,7 +759,6 @@ static int authorizer(void *autharg, int access_type, const char *arg3, const ch
char *filename;
switch (access_type) {
case SQLITE_COPY: {
- TSRMLS_FETCH();
filename = make_filename_safe(arg4 TSRMLS_CC);
if (!filename) {
return SQLITE_DENY;
@@ -773,7 +768,6 @@ static int authorizer(void *autharg, int access_type, const char *arg3, const ch
}
case SQLITE_ATTACH: {
- TSRMLS_FETCH();
filename = make_filename_safe(arg3 TSRMLS_CC);
if (!filename) {
return SQLITE_DENY;
diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c
index 207764b165..931ec336e8 100644
--- a/ext/pgsql/pgsql.c
+++ b/ext/pgsql/pgsql.c
@@ -834,7 +834,6 @@ static char *php_pgsql_PQescapeInternal(PGconn *conn, const char *str, size_t le
!strncmp(encoding, "GBK", sizeof("GBK")-1) ||
!strncmp(encoding, "JOHAB", sizeof("JOHAB")-1) ||
!strncmp(encoding, "UHC", sizeof("UHC")-1) ) {
- TSRMLS_FETCH();
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unsafe encoding is used. Do not use '%s' encoding or use PostgreSQL 9.0 or later libpq.", encoding);
}
@@ -961,7 +960,6 @@ static void _php_pgsql_notice_handler(void *resource_id, const char *message)
{
php_pgsql_notice *notice;
- TSRMLS_FETCH();
if (! PGG(ignore_notices)) {
notice = (php_pgsql_notice *)emalloc(sizeof(php_pgsql_notice));
notice->message = _php_pgsql_trim_message(message, &notice->len);
diff --git a/ext/phar/phar.c b/ext/phar/phar.c
index cdc61fee88..e3b663a011 100644
--- a/ext/phar/phar.c
+++ b/ext/phar/phar.c
@@ -312,7 +312,6 @@ int phar_archive_delref(phar_archive_data *phar TSRMLS_DC) /* {{{ */
static void destroy_phar_data_only(zval *zv) /* {{{ */
{
phar_archive_data *phar_data = (phar_archive_data *) Z_PTR_P(zv);
- TSRMLS_FETCH();
if (EG(exception) || --phar_data->refcount < 0) {
phar_destroy_phar_data(phar_data TSRMLS_CC);
@@ -355,7 +354,6 @@ static int phar_tmpclose_apply(zval *zv TSRMLS_DC) /* {{{ */
static void destroy_phar_data(zval *zv) /* {{{ */
{
phar_archive_data *phar_data = (phar_archive_data *)Z_PTR_P(zv);
- TSRMLS_FETCH();
if (PHAR_GLOBALS->request_ends) {
/* first, iterate over the manifest and close all PHAR_TMP entry fp handles,
@@ -378,8 +376,6 @@ static void destroy_phar_data(zval *zv) /* {{{ */
*/
void destroy_phar_manifest_entry_int(phar_entry_info *entry) /* {{{ */
{
- TSRMLS_FETCH();
-
if (entry->cfp) {
php_stream_close(entry->cfp);
entry->cfp = 0;
diff --git a/ext/phar/phar_internal.h b/ext/phar/phar_internal.h
index f49143bc8c..ed5fedd547 100644
--- a/ext/phar/phar_internal.h
+++ b/ext/phar/phar_internal.h
@@ -197,7 +197,7 @@ ZEND_EXTERN_MODULE_GLOBALS(phar)
#ifdef ZTS
# include "TSRM.h"
# define PHAR_G(v) TSRMG(phar_globals_id, zend_phar_globals *, v)
-# define PHAR_GLOBALS ((zend_phar_globals *) (*((void ***) tsrm_ls))[TSRM_UNSHUFFLE_RSRC_ID(phar_globals_id)])
+# define PHAR_GLOBALS ((zend_phar_globals *) (*((void ***) tsrm_get_ls_cache()))[TSRM_UNSHUFFLE_RSRC_ID(phar_globals_id)])
#else
# define PHAR_G(v) (phar_globals.v)
# define PHAR_GLOBALS (&phar_globals)
diff --git a/ext/readline/readline.c b/ext/readline/readline.c
index 0e7b146174..1b4fa5120a 100644
--- a/ext/readline/readline.c
+++ b/ext/readline/readline.c
@@ -481,7 +481,6 @@ static char **_readline_completion_cb(const char *text, int start, int end)
zval params[3];
int i;
char **matches = NULL;
- TSRMLS_FETCH();
_readline_string_zval(&params[0], text);
_readline_long_zval(&params[1], start);
@@ -544,7 +543,6 @@ static void php_rl_callback_handler(char *the_line)
{
zval params[1];
zval dummy;
- TSRMLS_FETCH();
ZVAL_NULL(&dummy);
diff --git a/ext/readline/readline_cli.c b/ext/readline/readline_cli.c
index 48ab488763..df23b55c3a 100644
--- a/ext/readline/readline_cli.c
+++ b/ext/readline/readline_cli.c
@@ -505,7 +505,6 @@ TODO:
*/
char *retval = NULL;
int textlen = strlen(text);
- TSRMLS_FETCH();
if (!index) {
cli_completion_state = 0;
diff --git a/ext/session/mod_mm.c b/ext/session/mod_mm.c
index bf48436a7e..ff5cb320e0 100644
--- a/ext/session/mod_mm.c
+++ b/ext/session/mod_mm.c
@@ -122,8 +122,6 @@ static ps_sd *ps_sd_new(ps_mm *data, const char *key)
sd = mm_malloc(data->mm, sizeof(ps_sd) + keylen);
if (!sd) {
- TSRMLS_FETCH();
-
php_error_docref(NULL TSRMLS_CC, E_WARNING, "mm_malloc failed, avail %ld, err %s", mm_available(data->mm), mm_error());
return NULL;
}
diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c
index d34587b85e..bbba4e36ca 100644
--- a/ext/soap/php_encoding.c
+++ b/ext/soap/php_encoding.c
@@ -3413,7 +3413,6 @@ xmlNsPtr encode_add_ns(xmlNodePtr node, const char* ns)
}
if (xmlns == NULL) {
xmlChar* prefix;
- TSRMLS_FETCH();
if ((prefix = zend_hash_str_find_ptr(&SOAP_GLOBAL(defEncNs), (char*)ns, strlen(ns))) != NULL) {
xmlns = xmlNewNs(node->doc->children, BAD_CAST(ns), prefix);
@@ -3457,7 +3456,6 @@ static void set_xsi_type(xmlNodePtr node, char *type)
void encode_reset_ns()
{
- TSRMLS_FETCH();
SOAP_GLOBAL(cur_uniq_ns) = 0;
SOAP_GLOBAL(cur_uniq_ref) = 0;
if (SOAP_GLOBAL(ref_map)) {
@@ -3470,7 +3468,6 @@ void encode_reset_ns()
void encode_finish()
{
- TSRMLS_FETCH();
SOAP_GLOBAL(cur_uniq_ns) = 0;
SOAP_GLOBAL(cur_uniq_ref) = 0;
if (SOAP_GLOBAL(ref_map)) {
@@ -3483,7 +3480,6 @@ void encode_finish()
encodePtr get_conversion(int encode)
{
encodePtr enc;
- TSRMLS_FETCH();
if ((enc = zend_hash_index_find_ptr(&SOAP_GLOBAL(defEncIndex), encode)) == NULL) {
soap_error0(E_ERROR, "Encoding: Cannot find encoding");
@@ -3610,8 +3606,6 @@ static encodePtr get_array_type(xmlNodePtr node, zval *array, smart_str *type TS
static void get_type_str(xmlNodePtr node, const char* ns, const char* type, smart_str* ret)
{
- TSRMLS_FETCH();
-
if (ns) {
xmlNsPtr xmlns;
if (SOAP_GLOBAL(soap_version) == SOAP_1_2 &&
diff --git a/ext/soap/php_sdl.c b/ext/soap/php_sdl.c
index 798c06fdd2..45582da6d9 100644
--- a/ext/soap/php_sdl.c
+++ b/ext/soap/php_sdl.c
@@ -168,7 +168,6 @@ encodePtr get_encoder(sdlPtr sdl, const char *ns, const char *type)
encodePtr get_encoder_ex(sdlPtr sdl, const char *nscat, int len)
{
encodePtr enc;
- TSRMLS_FETCH();
if ((enc = zend_hash_str_find_ptr(&SOAP_GLOBAL(defEnc), (char*)nscat, len)) != NULL) {
return enc;
diff --git a/ext/soap/php_xml.c b/ext/soap/php_xml.c
index 5ad5548c40..d59a65f182 100644
--- a/ext/soap/php_xml.c
+++ b/ext/soap/php_xml.c
@@ -133,8 +133,6 @@ xmlDocPtr soap_xmlParseMemory(const void *buf, size_t buf_size)
xmlParserCtxtPtr ctxt = NULL;
xmlDocPtr ret;
- TSRMLS_FETCH();
-
/*
xmlInitParser();
*/
diff --git a/ext/soap/soap.c b/ext/soap/soap.c
index 2b37622a7a..7c03b9ced4 100644
--- a/ext/soap/soap.c
+++ b/ext/soap/soap.c
@@ -2133,7 +2133,6 @@ static void soap_error_handler(int error_num, const char *error_filename, const
zend_execute_data *_old_current_execute_data;
int _old_http_response_code;
char *_old_http_status_line;
- TSRMLS_FETCH();
_old_in_compilation = CG(in_compilation);
_old_current_execute_data = EG(current_execute_data);
@@ -3384,7 +3383,6 @@ static void deserialize_parameters(xmlNodePtr params, sdlFunctionPtr function, i
sdlParamPtr param = NULL;
if (function != NULL &&
(param = zend_hash_index_find_ptr(function->requestParameters, cur_param)) == NULL) {
- TSRMLS_FETCH();
soap_server_fault("Client", "Error cannot find parameter", NULL, NULL, NULL TSRMLS_CC);
}
if (param == NULL) {
diff --git a/ext/sockets/config.m4 b/ext/sockets/config.m4
index a5a63dfb61..cea27000cf 100644
--- a/ext/sockets/config.m4
+++ b/ext/sockets/config.m4
@@ -56,6 +56,6 @@ if test "$PHP_SOCKETS" != "no"; then
AC_DEFINE(HAVE_AI_V4MAPPED,1,[Whether you have AI_V4MAPPED])
fi
- PHP_NEW_EXTENSION([sockets], [sockets.c multicast.c conversions.c sockaddr_conv.c sendrecvmsg.c], [$ext_shared])
+ PHP_NEW_EXTENSION([sockets], [sockets.c multicast.c conversions.c sockaddr_conv.c sendrecvmsg.c], [$ext_shared],, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)
PHP_INSTALL_HEADERS([ext/sockets/], [php_sockets.h])
fi
diff --git a/ext/sockets/config.w32 b/ext/sockets/config.w32
index aeaa8ed425..d3455b05dd 100644
--- a/ext/sockets/config.w32
+++ b/ext/sockets/config.w32
@@ -7,7 +7,7 @@ if (PHP_SOCKETS != "no") {
if (CHECK_LIB("ws2_32.lib", "sockets", PHP_SOCKETS)
&& CHECK_LIB("Iphlpapi.lib", "sockets", PHP_SOCKETS)
&& CHECK_HEADER_ADD_INCLUDE("winsock.h", "CFLAGS_SOCKETS")) {
- EXTENSION('sockets', 'sockets.c multicast.c conversions.c sockaddr_conv.c sendrecvmsg.c');
+ EXTENSION('sockets', 'sockets.c multicast.c conversions.c sockaddr_conv.c sendrecvmsg.c', PHP_SOCKETS_SHARED, "/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1");
AC_DEFINE('HAVE_SOCKETS', 1);
PHP_INSTALL_HEADERS("ext/sockets", "php_sockets.h");
} else {
diff --git a/ext/sockets/conversions.c b/ext/sockets/conversions.c
index d808271728..baa5681287 100644
--- a/ext/sockets/conversions.c
+++ b/ext/sockets/conversions.c
@@ -541,7 +541,6 @@ static void from_zval_write_sin_addr(const zval *zaddr_str, char *inaddr, ser_co
int res;
struct sockaddr_in saddr = {0};
zend_string *addr_str;
- TSRMLS_FETCH();
addr_str = zval_get_string((zval *) zaddr_str);
res = php_set_inet_addr(&saddr, addr_str->val, ctx->sock TSRMLS_CC);
@@ -592,7 +591,6 @@ static void from_zval_write_sin6_addr(const zval *zaddr_str, char *addr6, ser_co
int res;
struct sockaddr_in6 saddr6 = {0};
zend_string *addr_str;
- TSRMLS_FETCH();
addr_str = zval_get_string((zval *) zaddr_str);
res = php_set_inet6_addr(&saddr6, addr_str->val, ctx->sock TSRMLS_CC);
@@ -645,7 +643,6 @@ static void from_zval_write_sun_path(const zval *path, char *sockaddr_un_c, ser_
{
zend_string *path_str;
struct sockaddr_un *saddr = (struct sockaddr_un*)sockaddr_un_c;
- TSRMLS_FETCH();
path_str = zval_get_string((zval *) path);
@@ -1246,7 +1243,6 @@ static void from_zval_write_ifindex(const zval *zv, char *uinteger, ser_context
}
} else {
zend_string *str;
- TSRMLS_FETCH();
str = zval_get_string((zval *) zv);
@@ -1350,7 +1346,6 @@ size_t calculate_scm_rights_space(const zval *arr, ser_context *ctx)
static void from_zval_write_fd_array_aux(zval *elem, unsigned i, void **args, ser_context *ctx)
{
int *iarr = args[0];
- TSRMLS_FETCH();
if (Z_TYPE_P(elem) == IS_RESOURCE) {
php_stream *stream;
@@ -1395,7 +1390,6 @@ void to_zval_read_fd_array(const char *data, zval *zv, res_context *ctx)
i;
struct cmsghdr *dummy_cmsg = 0;
size_t data_offset;
- TSRMLS_FETCH();
data_offset = (unsigned char *)CMSG_DATA(dummy_cmsg)
- (unsigned char *)dummy_cmsg;
diff --git a/ext/sockets/php_sockets.h b/ext/sockets/php_sockets.h
index b1ee5798c9..8a25f960a3 100644
--- a/ext/sockets/php_sockets.h
+++ b/ext/sockets/php_sockets.h
@@ -89,7 +89,7 @@ ZEND_BEGIN_MODULE_GLOBALS(sockets)
ZEND_END_MODULE_GLOBALS(sockets)
#ifdef ZTS
-#define SOCKETS_G(v) TSRMG(sockets_globals_id, zend_sockets_globals *, v)
+#define SOCKETS_G(v) ZEND_TSRMG(sockets_globals_id, zend_sockets_globals *, v)
#else
#define SOCKETS_G(v) (sockets_globals.v)
#endif
diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c
index 0dab51bed6..263b8c45f7 100644
--- a/ext/sockets/sockets.c
+++ b/ext/sockets/sockets.c
@@ -370,6 +370,9 @@ zend_module_entry sockets_module_entry = {
#ifdef COMPILE_DL_SOCKETS
+#ifdef ZTS
+ ZEND_TSRMLS_CACHE_DEFINE;
+#endif
ZEND_GET_MODULE(sockets)
#endif
@@ -600,6 +603,9 @@ char *sockets_strerror(int error TSRMLS_DC) /* {{{ */
/* {{{ PHP_GINIT_FUNCTION */
static PHP_GINIT_FUNCTION(sockets)
{
+#if defined(COMPILE_DL_SOCKETS) && defined(ZTS)
+ ZEND_TSRMLS_CACHE_UPDATE;
+#endif
sockets_globals->last_error = 0;
sockets_globals->strerror_buf = NULL;
}
@@ -609,6 +615,9 @@ static PHP_GINIT_FUNCTION(sockets)
*/
static PHP_MINIT_FUNCTION(sockets)
{
+#if defined(COMPILE_DL_SOCKETS) && defined(ZTS)
+ ZEND_TSRMLS_CACHE_UPDATE;
+#endif
le_socket = zend_register_list_destructors_ex(php_destroy_socket, NULL, le_socket_name, module_number);
REGISTER_LONG_CONSTANT("AF_UNIX", AF_UNIX, CONST_CS | CONST_PERSISTENT);
diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c
index af3dec0681..214909a0c2 100644
--- a/ext/sqlite3/sqlite3.c
+++ b/ext/sqlite3/sqlite3.c
@@ -48,7 +48,6 @@ static void php_sqlite3_error(php_sqlite3_db_object *db_obj, char *format, ...)
{
va_list arg;
char *message;
- TSRMLS_FETCH();
va_start(arg, format);
vspprintf(&message, 0, format, arg);
@@ -812,7 +811,6 @@ static int sqlite3_do_callback(struct php_sqlite3_fci *fc, zval *cb, int argc, s
static void php_sqlite3_callback_func(sqlite3_context *context, int argc, sqlite3_value **argv) /* {{{ */
{
php_sqlite3_func *func = (php_sqlite3_func *)sqlite3_user_data(context);
- TSRMLS_FETCH();
sqlite3_do_callback(&func->afunc, &func->func, argc, argv, context, 0 TSRMLS_CC);
}
@@ -823,7 +821,6 @@ static void php_sqlite3_callback_step(sqlite3_context *context, int argc, sqlite
php_sqlite3_func *func = (php_sqlite3_func *)sqlite3_user_data(context);
php_sqlite3_agg_context *agg_context = (php_sqlite3_agg_context *)sqlite3_aggregate_context(context, sizeof(php_sqlite3_agg_context));
- TSRMLS_FETCH();
agg_context->row_count++;
sqlite3_do_callback(&func->astep, &func->step, argc, argv, context, 1 TSRMLS_CC);
@@ -835,7 +832,6 @@ static void php_sqlite3_callback_final(sqlite3_context *context) /* {{{ */
php_sqlite3_func *func = (php_sqlite3_func *)sqlite3_user_data(context);
php_sqlite3_agg_context *agg_context = (php_sqlite3_agg_context *)sqlite3_aggregate_context(context, sizeof(php_sqlite3_agg_context));
- TSRMLS_FETCH();
agg_context->row_count = 0;
sqlite3_do_callback(&func->afini, &func->fini, 0, NULL, context, 1 TSRMLS_CC);
@@ -849,8 +845,6 @@ static int php_sqlite3_callback_compare(void *coll, int a_len, const void *a, in
zval retval;
int ret;
- TSRMLS_FETCH();
-
collation->fci.fci.size = (sizeof(collation->fci.fci));
collation->fci.fci.function_table = EG(function_table);
ZVAL_COPY_VALUE(&collation->fci.fci.function_name, &collation->cmp_func);
@@ -1966,7 +1960,6 @@ static int php_sqlite3_authorizer(void *autharg, int access_type, const char *ar
case SQLITE_ATTACH:
{
if (memcmp(arg3, ":memory:", sizeof(":memory:")) && *arg3) {
- TSRMLS_FETCH();
#if PHP_API_VERSION < 20100412
if (PG(safe_mode) && (!php_checkuid(arg3, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
diff --git a/ext/standard/assert.c b/ext/standard/assert.c
index 65472170e2..efb708d4a9 100644
--- a/ext/standard/assert.c
+++ b/ext/standard/assert.c
@@ -36,7 +36,7 @@ ZEND_END_MODULE_GLOBALS(assert)
ZEND_DECLARE_MODULE_GLOBALS(assert)
#ifdef ZTS
-#define ASSERTG(v) TSRMG(assert_globals_id, zend_assert_globals *, v)
+#define ASSERTG(v) ZEND_TSRMG(assert_globals_id, zend_assert_globals *, v)
#else
#define ASSERTG(v) (assert_globals.v)
#endif
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c
index 5bcd3d3386..147ea0a767 100644
--- a/ext/standard/basic_functions.c
+++ b/ext/standard/basic_functions.c
@@ -4927,8 +4927,6 @@ static void user_tick_function_call(user_tick_function_entry *tick_fe TSRMLS_DC)
static void run_user_tick_functions(int tick_count) /* {{{ */
{
- TSRMLS_FETCH();
-
zend_llist_apply(BG(user_tick_functions), (llist_apply_func_t) user_tick_function_call TSRMLS_CC);
}
/* }}} */
@@ -4938,7 +4936,6 @@ static int user_tick_function_compare(user_tick_function_entry * tick_fe1, user_
zval *func1 = &tick_fe1->arguments[0];
zval *func2 = &tick_fe2->arguments[0];
int ret;
- TSRMLS_FETCH();
if (Z_TYPE_P(func1) == IS_STRING && Z_TYPE_P(func2) == IS_STRING) {
ret = (zend_binary_zval_strcmp(func1, func2) == 0);
diff --git a/ext/standard/basic_functions.h b/ext/standard/basic_functions.h
index eaac7a1609..1c142af842 100644
--- a/ext/standard/basic_functions.h
+++ b/ext/standard/basic_functions.h
@@ -231,7 +231,7 @@ typedef struct _php_basic_globals {
} php_basic_globals;
#ifdef ZTS
-#define BG(v) TSRMG(basic_globals_id, php_basic_globals *, v)
+#define BG(v) ZEND_TSRMG(basic_globals_id, php_basic_globals *, v)
PHPAPI extern int basic_globals_id;
#else
#define BG(v) (basic_globals.v)
diff --git a/ext/standard/browscap.c b/ext/standard/browscap.c
index a76fb136a3..2ea837ff60 100644
--- a/ext/standard/browscap.c
+++ b/ext/standard/browscap.c
@@ -46,7 +46,7 @@ ZEND_END_MODULE_GLOBALS(browscap)
ZEND_DECLARE_MODULE_GLOBALS(browscap)
#ifdef ZTS
-#define BROWSCAP_G(v) TSRMG(browscap_globals_id, zend_browscap_globals *, v)
+#define BROWSCAP_G(v) ZEND_TSRMG(browscap_globals_id, zend_browscap_globals *, v)
#else
#define BROWSCAP_G(v) (browscap_globals.v)
#endif
diff --git a/ext/standard/config.m4 b/ext/standard/config.m4
index 7a5f0effa0..e2ce61f561 100644
--- a/ext/standard/config.m4
+++ b/ext/standard/config.m4
@@ -605,7 +605,8 @@ PHP_NEW_EXTENSION(standard, array.c base64.c basic_functions.c browscap.c crc32.
incomplete_class.c url_scanner_ex.c ftp_fopen_wrapper.c \
http_fopen_wrapper.c php_fopen_wrapper.c credits.c css.c \
var_unserializer.c ftok.c sha1.c user_filters.c uuencode.c \
- filters.c proc_open.c streamsfuncs.c http.c password.c)
+ filters.c proc_open.c streamsfuncs.c http.c password.c,,,
+ -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)
PHP_ADD_MAKEFILE_FRAGMENT
PHP_INSTALL_HEADERS([ext/standard/])
diff --git a/ext/standard/config.w32 b/ext/standard/config.w32
index 5f24641b4d..e8b50efc7e 100644
--- a/ext/standard/config.w32
+++ b/ext/standard/config.w32
@@ -20,7 +20,8 @@ EXTENSION("standard", "array.c base64.c basic_functions.c browscap.c \
url_scanner_ex.c ftp_fopen_wrapper.c http_fopen_wrapper.c \
php_fopen_wrapper.c credits.c css.c var_unserializer.c ftok.c sha1.c \
user_filters.c uuencode.c filters.c proc_open.c password.c \
- streamsfuncs.c http.c flock_compat.c", false /* never shared */);
+ streamsfuncs.c http.c flock_compat.c", false /* never shared */,
+ '/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1');
PHP_INSTALL_HEADERS("", "ext/standard");
if (PHP_MBREGEX != "no") {
CHECK_HEADER_ADD_INCLUDE("oniguruma.h", "CFLAGS_STANDARD", PHP_MBREGEX + ";ext\\mbstring\\oniguruma")
diff --git a/ext/standard/dir.c b/ext/standard/dir.c
index 7b4ab1cd3e..6f4c70ebba 100644
--- a/ext/standard/dir.c
+++ b/ext/standard/dir.c
@@ -56,7 +56,7 @@ typedef struct {
} php_dir_globals;
#ifdef ZTS
-#define DIRG(v) TSRMG(dir_globals_id, php_dir_globals *, v)
+#define DIRG(v) ZEND_TSRMG(dir_globals_id, php_dir_globals *, v)
int dir_globals_id;
#else
#define DIRG(v) (dir_globals.v)
diff --git a/ext/standard/exec.c b/ext/standard/exec.c
index 28f01b338f..37bdefbb6b 100644
--- a/ext/standard/exec.c
+++ b/ext/standard/exec.c
@@ -245,8 +245,6 @@ PHPAPI zend_string *php_escape_shell_cmd(char *str)
size_t estimate = (2 * l) + 1;
zend_string *cmd;
- TSRMLS_FETCH();
-
cmd = zend_string_alloc(2 * l, 0);
for (x = 0, y = 0; x < l; x++) {
@@ -337,8 +335,6 @@ PHPAPI zend_string *php_escape_shell_arg(char *str)
zend_string *cmd;
size_t estimate = (4 * l) + 3;
- TSRMLS_FETCH();
-
cmd = zend_string_alloc(4 * l + 2, 0); /* worst case */
#ifdef PHP_WIN32
diff --git a/ext/standard/file.h b/ext/standard/file.h
index ec60b86e99..78cab4f62f 100644
--- a/ext/standard/file.h
+++ b/ext/standard/file.h
@@ -132,7 +132,7 @@ typedef struct {
} php_file_globals;
#ifdef ZTS
-#define FG(v) TSRMG(file_globals_id, php_file_globals *, v)
+#define FG(v) ZEND_TSRMG(file_globals_id, php_file_globals *, v)
extern PHPAPI int file_globals_id;
#else
#define FG(v) (file_globals.v)
diff --git a/ext/standard/incomplete_class.c b/ext/standard/incomplete_class.c
index 011407da29..02da0c11b7 100644
--- a/ext/standard/incomplete_class.c
+++ b/ext/standard/incomplete_class.c
@@ -136,7 +136,6 @@ PHPAPI zend_string *php_lookup_class_name(zval *object)
{
zval *val;
HashTable *object_properties;
- TSRMLS_FETCH();
object_properties = Z_OBJPROP_P(object);
@@ -153,8 +152,6 @@ PHPAPI zend_string *php_lookup_class_name(zval *object)
PHPAPI void php_store_class_name(zval *object, const char *name, uint32_t len)
{
zval val;
- TSRMLS_FETCH();
-
ZVAL_STRINGL(&val, name, len);
zend_hash_str_update(Z_OBJPROP_P(object), MAGIC_MEMBER, sizeof(MAGIC_MEMBER)-1, &val);
diff --git a/ext/standard/info.c b/ext/standard/info.c
index bc0ddddcc0..beec7749ca 100644
--- a/ext/standard/info.c
+++ b/ext/standard/info.c
@@ -65,7 +65,6 @@ static int php_info_print_html_esc(const char *str, int len) /* {{{ */
{
int written;
zend_string *new_str;
- TSRMLS_FETCH();
new_str = php_escape_html_entities((unsigned char *) str, len, 0, ENT_QUOTES, "utf-8" TSRMLS_CC);
written = php_output_write(new_str->val, new_str->len TSRMLS_CC);
@@ -79,7 +78,6 @@ static int php_info_printf(const char *fmt, ...) /* {{{ */
char *buf;
int len, written;
va_list argv;
- TSRMLS_FETCH();
va_start(argv, fmt);
len = vspprintf(&buf, 0, fmt, argv);
@@ -93,7 +91,6 @@ static int php_info_printf(const char *fmt, ...) /* {{{ */
static int php_info_print(const char *str) /* {{{ */
{
- TSRMLS_FETCH();
return php_output_write(str, strlen(str) TSRMLS_CC);
}
/* }}} */
diff --git a/ext/standard/math.c b/ext/standard/math.c
index 7014e6c938..ee06936369 100644
--- a/ext/standard/math.c
+++ b/ext/standard/math.c
@@ -972,12 +972,8 @@ PHPAPI zend_long _php_math_basetolong(zval *arg, int base)
if (num > onum)
continue;
- {
- TSRMLS_FETCH();
-
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Number '%s' is too big to fit in long", s);
- return ZEND_LONG_MAX;
- }
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Number '%s' is too big to fit in long", s);
+ return ZEND_LONG_MAX;
}
return num;
diff --git a/ext/standard/php_array.h b/ext/standard/php_array.h
index d86121b277..2c9b16463c 100644
--- a/ext/standard/php_array.h
+++ b/ext/standard/php_array.h
@@ -130,7 +130,7 @@ ZEND_BEGIN_MODULE_GLOBALS(array)
ZEND_END_MODULE_GLOBALS(array)
#ifdef ZTS
-#define ARRAYG(v) TSRMG(array_globals_id, zend_array_globals *, v)
+#define ARRAYG(v) ZEND_TSRMG(array_globals_id, zend_array_globals *, v)
#else
#define ARRAYG(v) (array_globals.v)
#endif
diff --git a/ext/standard/php_lcg.h b/ext/standard/php_lcg.h
index dcc82e9511..81d251c513 100644
--- a/ext/standard/php_lcg.h
+++ b/ext/standard/php_lcg.h
@@ -35,7 +35,7 @@ PHP_FUNCTION(lcg_value);
PHP_MINIT_FUNCTION(lcg);
#ifdef ZTS
-#define LCG(v) TSRMG(lcg_globals_id, php_lcg_globals *, v)
+#define LCG(v) ZEND_TSRMG(lcg_globals_id, php_lcg_globals *, v)
#else
#define LCG(v) (lcg_globals.v)
#endif
diff --git a/ext/standard/scanf.c b/ext/standard/scanf.c
index 62437831bb..3a6ec012a1 100644
--- a/ext/standard/scanf.c
+++ b/ext/standard/scanf.c
@@ -316,7 +316,6 @@ PHPAPI int ValidateFormat(char *format, int numVars, int *totalSubs)
int staticAssign[STATIC_LIST_SIZE];
int *nassign = staticAssign;
int objIndex, xpgSize, nspace = STATIC_LIST_SIZE;
- TSRMLS_FETCH();
/*
* Initialize an array that records the number of times a variable
diff --git a/ext/standard/string.c b/ext/standard/string.c
index 706a3eb075..1975f19b3f 100644
--- a/ext/standard/string.c
+++ b/ext/standard/string.c
@@ -3228,7 +3228,6 @@ char *php_strerror(int errnum)
{
extern int sys_nerr;
extern char *sys_errlist[];
- TSRMLS_FETCH();
if ((unsigned int) errnum < sys_nerr) {
return(sys_errlist[errnum]);
diff --git a/ext/tidy/tidy.c b/ext/tidy/tidy.c
index 63ccf52370..b1388f82ea 100644
--- a/ext/tidy/tidy.c
+++ b/ext/tidy/tidy.c
@@ -487,7 +487,6 @@ static void TIDY_CALL php_tidy_free(void *buf)
static void TIDY_CALL php_tidy_panic(ctmbstr msg)
{
- TSRMLS_FETCH();
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Could not allocate memory for tidy! (Reason: %s)", (char *)msg);
}
@@ -1144,7 +1143,6 @@ static int php_tidy_output_handler(void **nothing, php_output_context *output_co
int status = FAILURE;
TidyDoc doc;
TidyBuffer inbuf, outbuf, errbuf;
- PHP_OUTPUT_TSRMLS(output_context);
if (TG(clean_output) && (output_context->op & PHP_OUTPUT_HANDLER_START) && (output_context->op & PHP_OUTPUT_HANDLER_FINAL)) {
doc = tidyCreate();
diff --git a/ext/wddx/wddx.c b/ext/wddx/wddx.c
index 705babd885..eb29ce6cb1 100644
--- a/ext/wddx/wddx.c
+++ b/ext/wddx/wddx.c
@@ -445,7 +445,6 @@ static void php_wddx_serialize_object(wddx_packet *packet, zval *obj)
zend_ulong idx;
char tmp_buf[WDDX_BUF_LEN];
HashTable *objhash, *sleephash;
- TSRMLS_FETCH();
ZVAL_STRING(&fname, "__sleep");
/*
@@ -537,7 +536,6 @@ static void php_wddx_serialize_array(wddx_packet *packet, zval *arr)
HashTable *target_hash;
char tmp_buf[WDDX_BUF_LEN];
zend_ulong ind = 0;
- TSRMLS_FETCH();
target_hash = HASH_OF(arr);
ZEND_HASH_FOREACH_KEY(target_hash, idx, key) {
@@ -666,7 +664,6 @@ static void php_wddx_add_var(wddx_packet *packet, zval *name_var)
{
zval *val;
HashTable *target_hash;
- TSRMLS_FETCH();
if (Z_TYPE_P(name_var) == IS_STRING) {
zend_array *symbol_table = zend_rebuild_symbol_table(TSRMLS_C);
@@ -714,7 +711,7 @@ static void php_wddx_push_element(void *user_data, const XML_Char *name, const X
{
st_entry ent;
wddx_stack *stack = (wddx_stack *)user_data;
- TSRMLS_FETCH();
+
if (!strcmp((char *)name, EL_PACKET)) {
int i;
@@ -870,7 +867,6 @@ static void php_wddx_pop_element(void *user_data, const XML_Char *name)
HashTable *target_hash;
zend_class_entry *pce;
zval obj;
- TSRMLS_FETCH();
/* OBJECTS_FIXME */
if (stack->top == 0) {
@@ -986,7 +982,6 @@ static void php_wddx_process_data(void *user_data, const XML_Char *s, int len)
{
st_entry *ent;
wddx_stack *stack = (wddx_stack *)user_data;
- TSRMLS_FETCH();
if (!wddx_stack_is_empty(stack) && !stack->done) {
wddx_stack_top(stack, (void**)&ent);
diff --git a/ext/xml/xml.c b/ext/xml/xml.c
index f1a3442b6d..ecbfae53d2 100644
--- a/ext/xml/xml.c
+++ b/ext/xml/xml.c
@@ -470,7 +470,6 @@ static void xml_set_handler(zval *handler, zval *data)
static void xml_call_handler(xml_parser *parser, zval *handler, zend_function *function_ptr, int argc, zval *argv, zval *retval)
{
int i;
- TSRMLS_FETCH();
ZVAL_UNDEF(retval);
if (parser && handler && !EG(exception)) {
@@ -786,7 +785,6 @@ void _xml_startElementHandler(void *userData, const XML_Char *name, const XML_Ch
parser->ctag = zend_hash_next_index_insert(Z_ARRVAL(parser->data), &tag);
} else if (parser->level == (XML_MAXLEVEL + 1)) {
- TSRMLS_FETCH();
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Maximum depth exceeded - Results truncated");
}
}
@@ -928,7 +926,6 @@ void _xml_characterDataHandler(void *userData, const XML_Char *s, int len)
zend_hash_next_index_insert(Z_ARRVAL(parser->data), &tag);
} else if (parser->level == (XML_MAXLEVEL + 1)) {
- TSRMLS_FETCH();
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Maximum depth exceeded - Results truncated");
}
}
diff --git a/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c b/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c
index 13976077be..ce37e5f86e 100644
--- a/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c
+++ b/ext/xmlrpc/libxmlrpc/xml_to_xmlrpc.c
@@ -228,7 +228,6 @@ xml_element* XMLRPC_to_xml_element_worker(XMLRPC_VALUE current_vector, XMLRPC_VA
break;
case xmlrpc_double:
{
- TSRMLS_FETCH();
elem_val->name = strdup(ELEM_DOUBLE);
ap_php_snprintf(buf, BUF_SIZE, "%.*G", (int) EG(precision), XMLRPC_GetValueDouble(node));
simplestring_add(&elem_val->text, buf);
diff --git a/ext/xmlrpc/xmlrpc-epi-php.c b/ext/xmlrpc/xmlrpc-epi-php.c
index d43a31be11..41b1b958b9 100644
--- a/ext/xmlrpc/xmlrpc-epi-php.c
+++ b/ext/xmlrpc/xmlrpc-epi-php.c
@@ -865,7 +865,6 @@ static XMLRPC_VALUE php_xmlrpc_callback(XMLRPC_SERVER server, XMLRPC_REQUEST xRe
zval* php_function;
zval xmlrpc_params;
zval callback_params[3];
- TSRMLS_FETCH();
zval_ptr_dtor(&pData->xmlrpc_method);
zval_ptr_dtor(&pData->return_data);
@@ -906,7 +905,6 @@ static void php_xmlrpc_introspection_callback(XMLRPC_SERVER server, void* data)
zval callback_params[1];
zend_string *php_function_name;
xmlrpc_callback_data* pData = (xmlrpc_callback_data*)data;
- TSRMLS_FETCH();
/* setup data hoojum */
ZVAL_COPY_VALUE(&callback_params[0], &pData->caller_params);
@@ -1257,7 +1255,6 @@ XMLRPC_VECTOR_TYPE xmlrpc_str_as_vector_type(const char* str) /* {{{ */
int set_zval_xmlrpc_type(zval* value, XMLRPC_VALUE_TYPE newtype) /* {{{ */
{
int bSuccess = FAILURE;
- TSRMLS_FETCH();
/* we only really care about strings because they can represent
* base64 and datetime. all other types have corresponding php types
@@ -1304,7 +1301,6 @@ int set_zval_xmlrpc_type(zval* value, XMLRPC_VALUE_TYPE newtype) /* {{{ */
XMLRPC_VALUE_TYPE get_zval_xmlrpc_type(zval* value, zval* newvalue) /* {{{ */
{
XMLRPC_VALUE_TYPE type = xmlrpc_none;
- TSRMLS_FETCH();
if (value) {
switch (Z_TYPE_P(value)) {
diff --git a/ext/xsl/xsltprocessor.c b/ext/xsl/xsltprocessor.c
index 20af855aa4..bb4060233e 100644
--- a/ext/xsl/xsltprocessor.c
+++ b/ext/xsl/xsltprocessor.c
@@ -189,8 +189,6 @@ static void xsl_ext_function_php(xmlXPathParserContextPtr ctxt, int nargs, int t
xsl_object *intern;
zend_string *callable = NULL;
- TSRMLS_FETCH();
-
if (! zend_is_executing(TSRMLS_C)) {
xsltGenericError(xsltGenericErrorContext,
"xsltExtFunctionTest: Function called from outside of PHP\n");
diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c
index 000b96ad8e..4389f688dc 100644
--- a/ext/zlib/zlib.c
+++ b/ext/zlib/zlib.c
@@ -91,7 +91,6 @@ static int php_zlib_output_encoding(TSRMLS_D)
static int php_zlib_output_handler_ex(php_zlib_context *ctx, php_output_context *output_context)
{
int flags = Z_SYNC_FLUSH;
- PHP_OUTPUT_TSRMLS(output_context);
if (output_context->op & PHP_OUTPUT_HANDLER_START) {
/* start up */
@@ -177,7 +176,6 @@ static int php_zlib_output_handler_ex(php_zlib_context *ctx, php_output_context
static int php_zlib_output_handler(void **handler_context, php_output_context *output_context)
{
php_zlib_context *ctx = *(php_zlib_context **) handler_context;
- PHP_OUTPUT_TSRMLS(output_context);
if (!php_zlib_output_encoding(TSRMLS_C)) {
/* "Vary: Accept-Encoding" header sent along uncompressed content breaks caching in MSIE,
@@ -484,7 +482,6 @@ static PHP_FUNCTION(ob_gzhandler)
ZLIBG(ob_gzhandler) = php_zlib_output_handler_context_init(TSRMLS_C);
}
- TSRMLS_SET_CTX(ctx.tsrm_ls);
ctx.op = flags;
ctx.in.data = in_str;
ctx.in.used = in_len;
diff --git a/main/main.c b/main/main.c
index d7d7c44f80..3681f28545 100644
--- a/main/main.c
+++ b/main/main.c
@@ -376,7 +376,6 @@ static PHP_INI_DISP(display_errors_mode)
{
int mode, tmp_value_length, cgi_or_cli;
char *tmp_value;
- TSRMLS_FETCH();
if (type == ZEND_INI_DISPLAY_ORIG && ini_entry->modified) {
tmp_value = (ini_entry->orig_value ? ini_entry->orig_value->val : NULL );
@@ -723,7 +722,6 @@ PHPAPI size_t php_printf(const char *format, ...)
size_t ret;
char *buffer;
size_t size;
- TSRMLS_FETCH();
va_start(args, format);
size = vspprintf(&buffer, 0, format, args);
@@ -999,7 +997,6 @@ static void php_error_cb(int type, const char *error_filename, const uint error_
{
char *buffer;
int buffer_len, display;
- TSRMLS_FETCH();
buffer_len = vspprintf(&buffer, PG(log_errors_max_len), format, args);
@@ -1716,8 +1713,6 @@ int php_request_startup_for_hook(TSRMLS_D)
*/
void php_request_shutdown_for_exec(void *dummy)
{
- TSRMLS_FETCH();
-
/* used to close fd's in the 3..255 range here, but it's problematic
*/
shutdown_memory_manager(1, 1 TSRMLS_CC);
@@ -1729,8 +1724,6 @@ void php_request_shutdown_for_exec(void *dummy)
*/
void php_request_shutdown_for_hook(void *dummy)
{
- TSRMLS_FETCH();
-
if (PG(modules_activated)) zend_try {
php_call_shutdown_functions(TSRMLS_C);
} zend_end_try();
@@ -1782,7 +1775,6 @@ void php_request_shutdown_for_hook(void *dummy)
void php_request_shutdown(void *dummy)
{
zend_bool report_memleaks;
- TSRMLS_FETCH();
report_memleaks = PG(report_memleaks);
@@ -1918,7 +1910,6 @@ PHPAPI void php_com_initialize(TSRMLS_D)
*/
static size_t php_output_wrapper(const char *str, size_t str_length)
{
- TSRMLS_FETCH();
return php_output_write(str, str_length TSRMLS_CC);
}
/* }}} */
@@ -2017,7 +2008,6 @@ void dummy_invalid_parameter_handler(
int len;
if (!called) {
- TSRMLS_FETCH();
if(PG(windows_show_crt_warning)) {
called = 1;
if (function) {
@@ -2403,7 +2393,6 @@ void php_module_shutdown_for_exec(void)
*/
int php_module_shutdown_wrapper(sapi_module_struct *sapi_globals)
{
- TSRMLS_FETCH();
php_module_shutdown(TSRMLS_C);
return SUCCESS;
}
@@ -2617,8 +2606,6 @@ PHPAPI int php_execute_simple_script(zend_file_handle *primary_file, zval *ret T
*/
PHPAPI void php_handle_aborted_connection(void)
{
- TSRMLS_FETCH();
-
PG(connection_status) = PHP_CONNECTION_ABORTED;
php_output_set_status(PHP_OUTPUT_DISABLED TSRMLS_CC);
diff --git a/main/network.c b/main/network.c
index 9fd1285493..073f1b740a 100644
--- a/main/network.c
+++ b/main/network.c
@@ -1156,8 +1156,6 @@ PHPAPI int php_set_sock_blocking(php_socket_t socketd, int block TSRMLS_DC)
PHPAPI void _php_emit_fd_setsize_warning(int max_fd)
{
- TSRMLS_FETCH();
-
#ifdef PHP_WIN32
php_error_docref(NULL TSRMLS_CC, E_WARNING,
"PHP needs to be recompiled with a larger value of FD_SETSIZE.\n"
diff --git a/main/output.c b/main/output.c
index f44ae178b4..18708789ac 100644
--- a/main/output.c
+++ b/main/output.c
@@ -160,7 +160,7 @@ PHPAPI void php_output_shutdown(void)
PHPAPI int php_output_activate(TSRMLS_D)
{
#ifdef ZTS
- memset((*((void ***) tsrm_ls))[TSRM_UNSHUFFLE_RSRC_ID(output_globals_id)], 0, sizeof(zend_output_globals));
+ memset((*((void ***) tsrm_get_ls_cache()))[TSRM_UNSHUFFLE_RSRC_ID(output_globals_id)], 0, sizeof(zend_output_globals));
#else
memset(&output_globals, 0, sizeof(zend_output_globals));
#endif
@@ -798,7 +798,6 @@ static inline php_output_context *php_output_context_init(php_output_context *co
}
memset(context, 0, sizeof(php_output_context));
- TSRMLS_SET_CTX(context->tsrm_ls);
context->op = op;
return context;
@@ -929,7 +928,6 @@ static inline php_output_handler_status_t php_output_handler_op(php_output_handl
{
php_output_handler_status_t status;
int original_op = context->op;
- PHP_OUTPUT_TSRMLS(context);
#if PHP_OUTPUT_DEBUG
fprintf(stderr, ">>> op(%d, "
@@ -1268,7 +1266,6 @@ static inline int php_output_stack_pop(int flags TSRMLS_DC)
static int php_output_handler_compat_func(void **handler_context, php_output_context *output_context)
{
php_output_handler_func_t func = *(php_output_handler_func_t *) handler_context;
- PHP_OUTPUT_TSRMLS(output_context);
if (func) {
char *out_str = NULL;
diff --git a/main/php_globals.h b/main/php_globals.h
index a60efe69de..76933d8f07 100644
--- a/main/php_globals.h
+++ b/main/php_globals.h
@@ -26,7 +26,7 @@
typedef struct _php_core_globals php_core_globals;
#ifdef ZTS
-# define PG(v) TSRMG(core_globals_id, php_core_globals *, v)
+# define PG(v) ZEND_TSRMG(core_globals_id, php_core_globals *, v)
extern PHPAPI int core_globals_id;
#else
# define PG(v) (core_globals.v)
diff --git a/main/php_ini.c b/main/php_ini.c
index c90dc9f29f..d90ee9dedb 100644
--- a/main/php_ini.c
+++ b/main/php_ini.c
@@ -170,7 +170,6 @@ static int php_ini_available(zval *el, void *arg TSRMLS_DC)
PHPAPI void display_ini_entries(zend_module_entry *module)
{
int module_number, module_number_available;
- TSRMLS_FETCH();
if (module) {
module_number = module->module_number;
diff --git a/main/php_output.h b/main/php_output.h
index 02b2b85d13..69a45878cd 100644
--- a/main/php_output.h
+++ b/main/php_output.h
@@ -102,13 +102,8 @@ typedef struct _php_output_context {
int op;
php_output_buffer in;
php_output_buffer out;
-#ifdef ZTS
- void ***tsrm_ls;
-#endif
} php_output_context;
-#define PHP_OUTPUT_TSRMLS(ctx) TSRMLS_FETCH_FROM_CTX((ctx)->tsrm_ls)
-
/* old-style, stateless callback */
typedef void (*php_output_handler_func_t)(char *output, uint output_len, char **handled_output, uint *handled_output_len, int mode TSRMLS_DC);
/* new-style, opaque context callback */
@@ -153,7 +148,7 @@ ZEND_END_MODULE_GLOBALS(output)
/* there should not be a need to use OG() from outside of output.c */
#ifdef ZTS
-# define OG(v) TSRMG(output_globals_id, zend_output_globals *, v)
+# define OG(v) ZEND_TSRMG(output_globals_id, zend_output_globals *, v)
#else
# define OG(v) (output_globals.v)
#endif
diff --git a/main/snprintf.c b/main/snprintf.c
index 062ccc4eee..d323391808 100644
--- a/main/snprintf.c
+++ b/main/snprintf.c
@@ -787,7 +787,6 @@ static int format_converter(register buffy * odp, const char *fmt, va_list ap) /
*/
switch (*fmt) {
case 'Z': {
- TSRMLS_FETCH();
zvp = (zval*) va_arg(ap, zval*);
free_zcopy = zend_make_printable_zval(zvp, &zcopy TSRMLS_CC);
if (free_zcopy) {
diff --git a/main/spprintf.c b/main/spprintf.c
index cf730dd964..903c901abe 100644
--- a/main/spprintf.c
+++ b/main/spprintf.c
@@ -401,7 +401,6 @@ static void xbuf_format_converter(void *xbuf, zend_bool is_char, const char *fmt
*/
switch (*fmt) {
case 'Z': {
- TSRMLS_FETCH();
zvp = (zval*) va_arg(ap, zval*);
free_zcopy = zend_make_printable_zval(zvp, &zcopy TSRMLS_CC);
if (free_zcopy) {
diff --git a/main/streams/cast.c b/main/streams/cast.c
index 3291a9ca8f..dcb036aa4b 100644
--- a/main/streams/cast.c
+++ b/main/streams/cast.c
@@ -63,7 +63,6 @@ FILE *fopencookie(void *cookie, const char *mode, COOKIE_IO_FUNCTIONS_T *funcs)
static int stream_cookie_reader(void *cookie, char *buffer, int size)
{
int ret;
- TSRMLS_FETCH();
ret = php_stream_read((php_stream*)cookie, buffer, size);
return ret;
@@ -71,22 +70,17 @@ static int stream_cookie_reader(void *cookie, char *buffer, int size)
static int stream_cookie_writer(void *cookie, const char *buffer, int size)
{
- TSRMLS_FETCH();
-
return php_stream_write((php_stream *)cookie, (char *)buffer, size);
}
static PHP_FPOS_T stream_cookie_seeker(void *cookie, zend_off_t position, int whence)
{
- TSRMLS_FETCH();
-
return (PHP_FPOS_T)php_stream_seek((php_stream *)cookie, position, whence);
}
static int stream_cookie_closer(void *cookie)
{
php_stream *stream = (php_stream*)cookie;
- TSRMLS_FETCH();
/* prevent recursion */
stream->fclose_stdiocast = PHP_STREAM_FCLOSE_NONE;
@@ -96,7 +90,6 @@ static int stream_cookie_closer(void *cookie)
static ssize_t stream_cookie_reader(void *cookie, char *buffer, size_t size)
{
ssize_t ret;
- TSRMLS_FETCH();
ret = php_stream_read(((php_stream *)cookie), buffer, size);
return ret;
@@ -104,16 +97,12 @@ static ssize_t stream_cookie_reader(void *cookie, char *buffer, size_t size)
static ssize_t stream_cookie_writer(void *cookie, const char *buffer, size_t size)
{
- TSRMLS_FETCH();
-
return php_stream_write(((php_stream *)cookie), (char *)buffer, size);
}
# ifdef COOKIE_SEEKER_USES_OFF64_T
static int stream_cookie_seeker(void *cookie, __off64_t *position, int whence)
{
- TSRMLS_FETCH();
-
*position = php_stream_seek((php_stream *)cookie, (zend_off_t)*position, whence);
if (*position == -1) {
@@ -124,8 +113,6 @@ static int stream_cookie_seeker(void *cookie, __off64_t *position, int whence)
# else
static int stream_cookie_seeker(void *cookie, zend_off_t position, int whence)
{
- TSRMLS_FETCH();
-
return php_stream_seek((php_stream *)cookie, position, whence);
}
# endif
@@ -133,7 +120,6 @@ static int stream_cookie_seeker(void *cookie, zend_off_t position, int whence)
static int stream_cookie_closer(void *cookie)
{
php_stream *stream = (php_stream*)cookie;
- TSRMLS_FETCH();
/* prevent recursion */
stream->fclose_stdiocast = PHP_STREAM_FCLOSE_NONE;
diff --git a/sapi/apache2handler/sapi_apache2.c b/sapi/apache2handler/sapi_apache2.c
index fe200304fd..5ccc774e83 100644
--- a/sapi/apache2handler/sapi_apache2.c
+++ b/sapi/apache2handler/sapi_apache2.c
@@ -403,7 +403,6 @@ static apr_status_t php_apache_child_shutdown(void *tmp)
static void php_apache_add_version(apr_pool_t *p)
{
- TSRMLS_FETCH();
if (PG(expose_php)) {
ap_add_version_component(p, "PHP/" PHP_VERSION);
}
diff --git a/sapi/cli/php_cli.c b/sapi/cli/php_cli.c
index 04cbdeb8f1..19e56284e3 100644
--- a/sapi/cli/php_cli.c
+++ b/sapi/cli/php_cli.c
@@ -1235,7 +1235,7 @@ int main(int argc, char *argv[])
#ifdef ZTS
tsrm_startup(1, 1, 0, NULL);
- tsrm_ls = ts_resource(0);
+ tsrm_ls = ts_resource_ex(0, NULL);
#endif
#ifdef PHP_WIN32
diff --git a/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server.c
index 909e91e3fa..04a82e812d 100644
--- a/sapi/cli/php_cli_server.c
+++ b/sapi/cli/php_cli_server.c
@@ -1188,11 +1188,8 @@ static void php_cli_server_logf(const char *format TSRMLS_DC, ...) /* {{{ */
{
char *buf = NULL;
va_list ap;
-#ifdef ZTS
- va_start(ap, tsrm_ls);
-#else
+
va_start(ap, format);
-#endif
vspprintf(&buf, 0, format, ap);
va_end(ap);
@@ -2353,9 +2350,6 @@ static int php_cli_server_send_event(php_cli_server *server, php_cli_server_clie
/* }}} */
typedef struct php_cli_server_do_event_for_each_fd_callback_params {
-#ifdef ZTS
- void ***tsrm_ls;
-#endif
php_cli_server *server;
int(*rhandler)(php_cli_server*, php_cli_server_client* TSRMLS_DC);
int(*whandler)(php_cli_server*, php_cli_server_client* TSRMLS_DC);
@@ -2364,9 +2358,7 @@ typedef struct php_cli_server_do_event_for_each_fd_callback_params {
static int php_cli_server_do_event_for_each_fd_callback(void *_params, php_socket_t fd, int event) /* {{{ */
{
php_cli_server_do_event_for_each_fd_callback_params *params = _params;
-#ifdef ZTS
- void ***tsrm_ls = params->tsrm_ls;
-#endif
+
php_cli_server *server = params->server;
if (server->server_sock == fd) {
php_cli_server_client *client = NULL;
@@ -2418,9 +2410,6 @@ static int php_cli_server_do_event_for_each_fd_callback(void *_params, php_socke
static void php_cli_server_do_event_for_each_fd(php_cli_server *server, int(*rhandler)(php_cli_server*, php_cli_server_client* TSRMLS_DC), int(*whandler)(php_cli_server*, php_cli_server_client* TSRMLS_DC) TSRMLS_DC) /* {{{ */
{
php_cli_server_do_event_for_each_fd_callback_params params = {
-#ifdef ZTS
- tsrm_ls,
-#endif
server,
rhandler,
whandler
diff --git a/win32/build/config.w32 b/win32/build/config.w32
index 358ff4e0ce..54fadc09b3 100644
--- a/win32/build/config.w32
+++ b/win32/build/config.w32
@@ -368,6 +368,8 @@ ADD_SOURCES("Zend", "zend_language_parser.c zend_language_scanner.c \
zend_float.c zend_string.c zend_generators.c zend_virtual_cwd.c zend_ast.c \
zend_inheritance.c");
+ADD_FLAG("CFLAGS_BD_ZEND", "/D ZEND_ENABLE_STATIC_TSRMLS_CACHE=1");
+
if (VCVERS == 1200) {
AC_DEFINE('ZEND_DVAL_TO_LVAL_CAST_OK', 1);
}
diff --git a/win32/php_win32_globals.h b/win32/php_win32_globals.h
index 42f5ec9411..4029117b8f 100644
--- a/win32/php_win32_globals.h
+++ b/win32/php_win32_globals.h
@@ -26,7 +26,7 @@
typedef struct _php_win32_core_globals php_win32_core_globals;
#ifdef ZTS
-# define PW32G(v) TSRMG(php_win32_core_globals_id, php_win32_core_globals*, v)
+# define PW32G(v) ZEND_TSRMG(php_win32_core_globals_id, php_win32_core_globals*, v)
extern PHPAPI int php_win32_core_globals_id;
#else
# define PW32G(v) (the_php_win32_core_globals.v)
diff --git a/win32/readdir.c b/win32/readdir.c
index 0edd5764d4..2aba14ddf5 100644
--- a/win32/readdir.c
+++ b/win32/readdir.c
@@ -26,7 +26,6 @@ DIR *opendir(const char *dir)
HANDLE handle;
int index;
char resolved_path_buff[MAXPATHLEN];
- TSRMLS_FETCH();
if (!VCWD_REALPATH(dir, resolved_path_buff)) {
return NULL;
diff --git a/win32/wsyslog.c b/win32/wsyslog.c
index 75c5ef58e5..89f98e5224 100644
--- a/win32/wsyslog.c
+++ b/win32/wsyslog.c
@@ -61,7 +61,6 @@
void closelog(void)
{
- TSRMLS_FETCH();
if (PW32G(log_source)) {
DeregisterEventSource(PW32G(log_source));
PW32G(log_source) = NULL;
@@ -85,7 +84,6 @@ void syslog(int priority, const char *message, ...)
unsigned short etype;
char *tmp = NULL;
DWORD evid;
- TSRMLS_FETCH();
/* default event source */
if (!PW32G(log_source))
@@ -123,8 +121,6 @@ void syslog(int priority, const char *message, ...)
void openlog(const char *ident, int logopt, int facility)
{
- TSRMLS_FETCH();
-
if (PW32G(log_source)) {
closelog();
}