switch (Z_TYPE_P(expr)) {
case IS_ARRAY:
ZEND_PUTS("Array (");
- if (Z_REFCOUNTED_P(expr)) {
- if (Z_IS_RECURSIVE_P(expr)) {
+ if (!(GC_FLAGS(Z_ARRVAL_P(expr)) & GC_IMMUTABLE)) {
+ if (GC_IS_RECURSIVE(Z_ARRVAL_P(expr))) {
ZEND_PUTS(" *RECURSION*");
return;
}
- Z_PROTECT_RECURSION_P(expr);
+ GC_PROTECT_RECURSION(Z_ARRVAL_P(expr));
}
print_flat_hash(Z_ARRVAL_P(expr));
ZEND_PUTS(")");
- if (Z_REFCOUNTED_P(expr)) {
- Z_UNPROTECT_RECURSION_P(expr);
+ if (!(GC_FLAGS(Z_ARRVAL_P(expr)) & GC_IMMUTABLE)) {
+ GC_UNPROTECT_RECURSION(Z_ARRVAL_P(expr));
}
break;
case IS_OBJECT:
zend_printf("%s Object (", ZSTR_VAL(class_name));
zend_string_release_ex(class_name, 0);
- if (Z_IS_RECURSIVE_P(expr)) {
+ if (GC_IS_RECURSIVE(Z_OBJ_P(expr))) {
ZEND_PUTS(" *RECURSION*");
return;
}
properties = Z_OBJPROP_P(expr);
}
if (properties) {
- Z_PROTECT_RECURSION_P(expr);
+ GC_PROTECT_RECURSION(Z_OBJ_P(expr));
print_flat_hash(properties);
- Z_UNPROTECT_RECURSION_P(expr);
+ GC_UNPROTECT_RECURSION(Z_OBJ_P(expr));
}
ZEND_PUTS(")");
break;
switch (Z_TYPE_P(expr)) {
case IS_ARRAY:
smart_str_appends(buf, "Array\n");
- if (Z_REFCOUNTED_P(expr)) {
- if (Z_IS_RECURSIVE_P(expr)) {
+ if (!(GC_FLAGS(Z_ARRVAL_P(expr)) & GC_IMMUTABLE)) {
+ if (GC_IS_RECURSIVE(Z_ARRVAL_P(expr))) {
smart_str_appends(buf, " *RECURSION*");
return;
}
- Z_PROTECT_RECURSION_P(expr);
+ GC_PROTECT_RECURSION(Z_ARRVAL_P(expr));
}
print_hash(buf, Z_ARRVAL_P(expr), indent, 0);
- if (Z_REFCOUNTED_P(expr)) {
- Z_UNPROTECT_RECURSION_P(expr);
+ if (!(GC_FLAGS(Z_ARRVAL_P(expr)) & GC_IMMUTABLE)) {
+ GC_UNPROTECT_RECURSION(Z_ARRVAL_P(expr));
}
break;
case IS_OBJECT:
zend_string_release_ex(class_name, 0);
smart_str_appends(buf, " Object\n");
- if (Z_IS_RECURSIVE_P(expr)) {
+ if (GC_IS_RECURSIVE(Z_OBJ_P(expr))) {
smart_str_appends(buf, " *RECURSION*");
return;
}
break;
}
- Z_PROTECT_RECURSION_P(expr);
+ GC_PROTECT_RECURSION(Z_OBJ_P(expr));
print_hash(buf, properties, indent, 1);
- Z_UNPROTECT_RECURSION_P(expr);
+ GC_UNPROTECT_RECURSION(Z_OBJ_P(expr));
if (is_temp) {
zend_hash_destroy(properties);