summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
Diffstat (limited to 'Zend')
-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
23 files changed, 41 insertions, 145 deletions
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 eb91026a24..36f8589409 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;
@@ -574,6 +575,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;
@@ -722,16 +724,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
@@ -824,8 +826,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);
@@ -991,7 +991,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 b965d20991..82864f2a46 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;
@@ -2501,8 +2499,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 1da64bb978..35361663ad 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);
}
/* }}} */
@@ -1143,8 +1140,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
/*
@@ -1185,7 +1180,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:
@@ -1203,7 +1200,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:
@@ -1277,8 +1277,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)