@@ -26,12 +26,26 @@ typedef struct _zend_executor_globals zend_executor_globals;
2626typedef struct _zend_php_scanner_globals zend_php_scanner_globals ;
2727typedef struct _zend_ini_scanner_globals zend_ini_scanner_globals ;
2828
29+ #ifdef ZEND_WIN32
30+ # define ZEND_TLS_API
31+ # ifdef LIBZEND_EXPORTS
32+ # define ZEND_TLS_DIRECT 1
33+ # endif
34+ #else
35+ # define ZEND_TLS_API ZEND_API
36+ # define ZEND_TLS_DIRECT 1
37+ #endif
38+
2939BEGIN_EXTERN_C ()
3040
3141/* Compiler */
3242#ifdef ZTS
33- extern ZEND_API TSRM_TLS TSRM_TLS_MODEL_ATTR zend_compiler_globals compiler_globals_tls ;
34- # define CG (v ) (compiler_globals_tls.v)
43+ # ifdef ZEND_TLS_DIRECT
44+ extern ZEND_TLS_API TSRM_TLS TSRM_TLS_MODEL_ATTR zend_compiler_globals compiler_globals_tls ;
45+ # define CG (v ) (compiler_globals_tls.v)
46+ # else
47+ # define CG (v ) ZEND_TSRMG(compiler_globals_id, zend_compiler_globals *, v)
48+ # endif
3549#else
3650# define CG (v ) (compiler_globals.v)
3751extern ZEND_API struct _zend_compiler_globals compiler_globals ;
@@ -41,8 +55,12 @@ ZEND_API int zendparse(void);
4155
4256/* Executor */
4357#ifdef ZTS
44- extern ZEND_API TSRM_TLS TSRM_TLS_MODEL_ATTR zend_executor_globals executor_globals_tls ;
45- # define EG (v ) (executor_globals_tls.v)
58+ # ifdef ZEND_TLS_DIRECT
59+ extern ZEND_TLS_API TSRM_TLS TSRM_TLS_MODEL_ATTR zend_executor_globals executor_globals_tls ;
60+ # define EG (v ) (executor_globals_tls.v)
61+ # else
62+ # define EG (v ) ZEND_TSRMG(executor_globals_id, zend_executor_globals *, v)
63+ # endif
4664#else
4765# define EG (v ) (executor_globals.v)
4866extern ZEND_API zend_executor_globals executor_globals ;
0 commit comments