diff options
Diffstat (limited to 'Zend/zend_gc.c')
| -rw-r--r-- | Zend/zend_gc.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/Zend/zend_gc.c b/Zend/zend_gc.c index f999a4dd10..a5880933b7 100644 --- a/Zend/zend_gc.c +++ b/Zend/zend_gc.c @@ -211,7 +211,8 @@ typedef struct _zend_gc_globals { #ifdef ZTS static int gc_globals_id; -#define GC_G(v) ZEND_TSRMG(gc_globals_id, zend_gc_globals *, v) +static size_t gc_globals_offset; +#define GC_G(v) ZEND_TSRMG_FAST(gc_globals_offset, zend_gc_globals *, v) #else #define GC_G(v) (gc_globals.v) static zend_gc_globals gc_globals; @@ -442,7 +443,7 @@ static void gc_globals_ctor_ex(zend_gc_globals *gc_globals) void gc_globals_ctor(void) { #ifdef ZTS - ts_allocate_id(&gc_globals_id, sizeof(zend_gc_globals), (ts_allocate_ctor) gc_globals_ctor_ex, (ts_allocate_dtor) root_buffer_dtor); + ts_allocate_fast_id(&gc_globals_id, &gc_globals_offset, sizeof(zend_gc_globals), (ts_allocate_ctor) gc_globals_ctor_ex, (ts_allocate_dtor) root_buffer_dtor); #else gc_globals_ctor_ex(&gc_globals); #endif @@ -1575,3 +1576,10 @@ ZEND_API void zend_gc_get_status(zend_gc_status *status) status->threshold = GC_G(gc_threshold); status->num_roots = GC_G(num_roots); } + +#ifdef ZTS +size_t zend_gc_globals_size(void) +{ + return sizeof(zend_gc_globals); +} +#endif |
