Skip to content

Commit b9b1d62

Browse files
committed
Add GC API for storing HashTables and FCC
1 parent 1835729 commit b9b1d62

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

Zend/zend_gc.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,26 @@ static zend_always_inline void zend_get_gc_buffer_add_obj(
118118
gc_buffer->cur++;
119119
}
120120

121+
static zend_always_inline void zend_get_gc_buffer_add_hashtable(zend_get_gc_buffer *gc_buffer, HashTable *ht)
122+
{
123+
if (UNEXPECTED(gc_buffer->cur == gc_buffer->end)) {
124+
zend_get_gc_buffer_grow(gc_buffer);
125+
}
126+
ZVAL_ARR(gc_buffer->cur, ht);
127+
gc_buffer->cur++;
128+
}
129+
130+
static zend_always_inline void zend_get_gc_buffer_add_fcc(zend_get_gc_buffer *gc_buffer, zend_fcall_info_cache *fcc)
131+
{
132+
ZEND_ASSERT(ZEND_FCC_INITIALIZED(*fcc));
133+
if (fcc->object) {
134+
zend_get_gc_buffer_add_obj(gc_buffer, fcc->object);
135+
}
136+
if (fcc->closure) {
137+
zend_get_gc_buffer_add_obj(gc_buffer, fcc->closure);
138+
}
139+
}
140+
121141
static zend_always_inline void zend_get_gc_buffer_use(
122142
zend_get_gc_buffer *gc_buffer, zval **table, int *n) {
123143
*table = gc_buffer->start;

0 commit comments

Comments
 (0)