]> granicus.if.org Git - php/commitdiff
add macro to access globals as whole
authorAnatol Belski <ab@php.net>
Thu, 30 Jul 2015 06:31:00 +0000 (08:31 +0200)
committerAnatol Belski <ab@php.net>
Thu, 30 Jul 2015 07:05:08 +0000 (09:05 +0200)
TSRM/TSRM.h
Zend/zend_API.h

index 859b3fac0159d23d35cb732a0712aa1d68ebd472..67adaa34404cfe8851dfd98ee078ec5529f3a05e 100644 (file)
@@ -165,9 +165,11 @@ TSRM_API void *tsrm_get_ls_cache(void);
 
 #define TSRMLS_FETCH_FROM_CTX(ctx)     void ***tsrm_ls = (void ***) ctx
 #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(id, type, element)       (TSRMG_BULK(id, type)->element)
+#define TSRMG_BULK(id, type)   ((type) (*((void ***) tsrm_get_ls_cache()))[TSRM_UNSHUFFLE_RSRC_ID(id)])
 
-#define TSRMG_STATIC(id, type, element)        (((type) (*((void ***) TSRMLS_CACHE))[TSRM_UNSHUFFLE_RSRC_ID(id)])->element)
+#define TSRMG_STATIC(id, type, element)        (TSRMG_BULK_STATIC(id, type)->element)
+#define TSRMG_BULK_STATIC(id, type)    ((type) (*((void ***) TSRMLS_CACHE))[TSRM_UNSHUFFLE_RSRC_ID(id)])
 #define TSRMLS_CACHE_EXTERN() extern TSRM_TLS void *TSRMLS_CACHE
 #define TSRMLS_CACHE_DEFINE() TSRM_TLS void *TSRMLS_CACHE = NULL
 #if ZEND_DEBUG
index ee3c8d96a7ad2c32d5acac28298c2e1956b29d18..8dc3e8a2e87d3c25e60b7498c30e900c16ea00ab 100644 (file)
@@ -159,6 +159,7 @@ typedef struct _zend_fcall_info_cache {
 #define ZEND_INIT_MODULE_GLOBALS(module_name, globals_ctor, globals_dtor)      \
        ts_allocate_id(&module_name##_globals_id, sizeof(zend_##module_name##_globals), (ts_allocate_ctor) globals_ctor, (ts_allocate_dtor) globals_dtor);
 #define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) ZEND_TSRMG(module_name##_globals_id, zend_##module_name##_globals *, v)
+#define ZEND_MODULE_GLOBALS_BULK(module_name) TSRMG_BULK(module_name##_globals_id, zend_##module_name##_globals *)
 
 #else
 
@@ -169,6 +170,7 @@ typedef struct _zend_fcall_info_cache {
 #define ZEND_INIT_MODULE_GLOBALS(module_name, globals_ctor, globals_dtor)      \
        globals_ctor(&module_name##_globals);
 #define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
+#define ZEND_MODULE_GLOBALS_BULK(module_name) (&module_name##_globals)
 
 #endif