} \
} while (0)
+#define GC_REMOVE_ZOBJ_FROM_BUFFER(z) do { \
+ if (GC_ADDRESS((z)->gc.u.v.buffer)) { \
+ gc_remove_zval_from_buffer(&(z)->gc TSRMLS_CC); \
+ } \
+ } while (0)
+
static zend_always_inline void gc_zval_check_possible_root(zval *z TSRMLS_DC)
{
if (Z_TYPE_P(z) == IS_ARRAY || Z_TYPE_P(z) == IS_OBJECT) {
obj->gc.refcount--;
if (obj->gc.refcount == 0) {
- gc_remove_zval_from_buffer((zend_refcounted*)obj TSRMLS_CC);
+ GC_REMOVE_ZOBJ_FROM_BUFFER(obj TSRMLS_CC);
}
}
}
zend_object *obj = objects->object_buckets[i];
if (IS_VALID(obj)) {
- gc_remove_zval_from_buffer((zend_refcounted*)obj TSRMLS_CC);
+ GC_REMOVE_ZOBJ_FROM_BUFFER(obj TSRMLS_CC);
objects->object_buckets[i] = SET_INVALID(obj);
if (obj->handlers->free_obj) {
obj->handlers->free_obj(obj TSRMLS_CC);