diff options
Diffstat (limited to 'Zend')
-rw-r--r-- | Zend/Makefile.am | 1 | ||||
-rw-r--r-- | Zend/zend.c | 10 | ||||
-rw-r--r-- | Zend/zend.h | 16 | ||||
-rw-r--r-- | Zend/zend_alloc.c | 3 | ||||
-rw-r--r-- | Zend/zend_compile.c | 2 | ||||
-rw-r--r-- | Zend/zend_gc.h | 2 | ||||
-rw-r--r-- | Zend/zend_globals_macros.h | 11 | ||||
-rw-r--r-- | Zend/zend_ini_parser.y | 6 | ||||
-rw-r--r-- | Zend/zend_language_parser.y | 4 | ||||
-rw-r--r-- | Zend/zend_modules.h | 2 | ||||
-rw-r--r-- | Zend/zend_signal.h | 2 | ||||
-rw-r--r-- | Zend/zend_virtual_cwd.h | 2 |
12 files changed, 36 insertions, 25 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 89977e7734..2bb90da5f2 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; @@ -464,6 +465,7 @@ static void compiler_globals_dtor(zend_compiler_globals *compiler_globals TSRMLS static void executor_globals_ctor(zend_executor_globals *executor_globals TSRMLS_DC) /* {{{ */ { + ZEND_TSRMLS_CACHE_UPDATE; zend_startup_constants(TSRMLS_C); zend_copy_constants(EG(zend_constants), GLOBAL_CONSTANTS_TABLE); zend_init_rsrc_plist(TSRMLS_C); @@ -557,9 +559,11 @@ 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; + ZEND_TSRMLS_CACHE_UPDATE; #endif start_memory_manager(TSRMLS_C); @@ -705,16 +709,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 diff --git a/Zend/zend.h b/Zend/zend.h index b254b2974b..1d4f14b380 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -60,6 +60,22 @@ !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 +#define ZEND_TSRMLS_CACHE TSRMLS_CACHE +#else +#define ZEND_TSRMG TSRMG +#define ZEND_TSRMLS_CACHE_EXTERN +#define ZEND_TSRMLS_CACHE_DEFINE +#define ZEND_TSRMLS_CACHE_UPDATE +#define ZEND_TSRMLS_CACHE +#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_alloc.c b/Zend/zend_alloc.c index a1af2fcc7f..66141339e0 100644 --- a/Zend/zend_alloc.c +++ b/Zend/zend_alloc.c @@ -2080,7 +2080,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; @@ -2411,6 +2411,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_compile.c b/Zend/zend_compile.c index dae6c22026..9c5ca95b8d 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -3093,7 +3093,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_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_ini_parser.y b/Zend/zend_ini_parser.y index 20991bf3f9..226fe68a2f 100644 --- a/Zend/zend_ini_parser.y +++ b/Zend/zend_ini_parser.y @@ -36,13 +36,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 diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 4d66648055..caa611460d 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -54,10 +54,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> 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_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_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) |