diff --git a/Zend/zend_gc.h b/Zend/zend_gc.h index a52de1bfcfa..262d656c24e 100644 --- a/Zend/zend_gc.h +++ b/Zend/zend_gc.h @@ -141,6 +141,18 @@ static zend_always_inline void zend_get_gc_buffer_add_obj( gc_buffer->cur++; } +static zend_always_inline void zend_get_gc_buffer_add_ht( + zend_get_gc_buffer *gc_buffer, HashTable *ht) { + if (GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) { + return; + } + if (UNEXPECTED(gc_buffer->cur == gc_buffer->end)) { + zend_get_gc_buffer_grow(gc_buffer); + } + ZVAL_ARR(gc_buffer->cur, ht); + gc_buffer->cur++; +} + static zend_always_inline void zend_get_gc_buffer_add_ptr( zend_get_gc_buffer *gc_buffer, void *ptr) { if (UNEXPECTED(gc_buffer->cur == gc_buffer->end)) {