if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) {
ht = Z_ARRVAL_P(subject);
} else if (UNEXPECTED(Z_TYPE_P(subject) == IS_OBJECT)) {
- ht = Z_OBJPROP_P(subject);
+ ht = zend_get_properties_for(subject, ZEND_PROP_PURPOSE_ARRAY_CAST);
} else if (Z_ISREF_P(subject)) {
subject = Z_REFVAL_P(subject);
goto try_again_subject;
result = 0;
}
+ if (Z_TYPE_P(subject) != IS_ARRAY) {
+ zend_release_properties(ht);
+ }
+
ZEND_VM_SMART_BRANCH(result, 1);
ZVAL_BOOL(EX_VAR(opline->result.var), result);
if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) {
ht = Z_ARRVAL_P(subject);
} else if (UNEXPECTED(Z_TYPE_P(subject) == IS_OBJECT)) {
- ht = Z_OBJPROP_P(subject);
+ ht = zend_get_properties_for(subject, ZEND_PROP_PURPOSE_ARRAY_CAST);
} else if (Z_ISREF_P(subject)) {
subject = Z_REFVAL_P(subject);
goto try_again_subject;
result = 0;
}
+ if (Z_TYPE_P(subject) != IS_ARRAY) {
+ zend_release_properties(ht);
+ }
+
zval_ptr_dtor_nogc(free_op2);
ZEND_VM_SMART_BRANCH(result, 1);
if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) {
ht = Z_ARRVAL_P(subject);
} else if (UNEXPECTED(Z_TYPE_P(subject) == IS_OBJECT)) {
- ht = Z_OBJPROP_P(subject);
+ ht = zend_get_properties_for(subject, ZEND_PROP_PURPOSE_ARRAY_CAST);
} else if (Z_ISREF_P(subject)) {
subject = Z_REFVAL_P(subject);
goto try_again_subject;
result = 0;
}
+ if (Z_TYPE_P(subject) != IS_ARRAY) {
+ zend_release_properties(ht);
+ }
+
ZEND_VM_SMART_BRANCH(result, 1);
ZVAL_BOOL(EX_VAR(opline->result.var), result);
if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) {
ht = Z_ARRVAL_P(subject);
} else if (UNEXPECTED(Z_TYPE_P(subject) == IS_OBJECT)) {
- ht = Z_OBJPROP_P(subject);
+ ht = zend_get_properties_for(subject, ZEND_PROP_PURPOSE_ARRAY_CAST);
} else if (Z_ISREF_P(subject)) {
subject = Z_REFVAL_P(subject);
goto try_again_subject;
result = 0;
}
+ if (Z_TYPE_P(subject) != IS_ARRAY) {
+ zend_release_properties(ht);
+ }
+
zval_ptr_dtor_nogc(free_op1);
ZEND_VM_SMART_BRANCH(result, 1);
ZVAL_BOOL(EX_VAR(opline->result.var), result);
if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) {
ht = Z_ARRVAL_P(subject);
} else if (UNEXPECTED(Z_TYPE_P(subject) == IS_OBJECT)) {
- ht = Z_OBJPROP_P(subject);
+ ht = zend_get_properties_for(subject, ZEND_PROP_PURPOSE_ARRAY_CAST);
} else if (Z_ISREF_P(subject)) {
subject = Z_REFVAL_P(subject);
goto try_again_subject;
result = 0;
}
+ if (Z_TYPE_P(subject) != IS_ARRAY) {
+ zend_release_properties(ht);
+ }
+
zval_ptr_dtor_nogc(free_op2);
zval_ptr_dtor_nogc(free_op1);
ZEND_VM_SMART_BRANCH(result, 1);
if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) {
ht = Z_ARRVAL_P(subject);
} else if (UNEXPECTED(Z_TYPE_P(subject) == IS_OBJECT)) {
- ht = Z_OBJPROP_P(subject);
+ ht = zend_get_properties_for(subject, ZEND_PROP_PURPOSE_ARRAY_CAST);
} else if (Z_ISREF_P(subject)) {
subject = Z_REFVAL_P(subject);
goto try_again_subject;
result = 0;
}
+ if (Z_TYPE_P(subject) != IS_ARRAY) {
+ zend_release_properties(ht);
+ }
+
zval_ptr_dtor_nogc(free_op1);
ZEND_VM_SMART_BRANCH(result, 1);
ZVAL_BOOL(EX_VAR(opline->result.var), result);
if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) {
ht = Z_ARRVAL_P(subject);
} else if (UNEXPECTED(Z_TYPE_P(subject) == IS_OBJECT)) {
- ht = Z_OBJPROP_P(subject);
+ ht = zend_get_properties_for(subject, ZEND_PROP_PURPOSE_ARRAY_CAST);
} else if (Z_ISREF_P(subject)) {
subject = Z_REFVAL_P(subject);
goto try_again_subject;
result = 0;
}
+ if (Z_TYPE_P(subject) != IS_ARRAY) {
+ zend_release_properties(ht);
+ }
+
ZEND_VM_SMART_BRANCH(result, 1);
ZVAL_BOOL(EX_VAR(opline->result.var), result);
if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) {
ht = Z_ARRVAL_P(subject);
} else if (UNEXPECTED(Z_TYPE_P(subject) == IS_OBJECT)) {
- ht = Z_OBJPROP_P(subject);
+ ht = zend_get_properties_for(subject, ZEND_PROP_PURPOSE_ARRAY_CAST);
} else if (Z_ISREF_P(subject)) {
subject = Z_REFVAL_P(subject);
goto try_again_subject;
result = 0;
}
+ if (Z_TYPE_P(subject) != IS_ARRAY) {
+ zend_release_properties(ht);
+ }
+
zval_ptr_dtor_nogc(free_op2);
ZEND_VM_SMART_BRANCH(result, 1);
if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) {
ht = Z_ARRVAL_P(subject);
} else if (UNEXPECTED(Z_TYPE_P(subject) == IS_OBJECT)) {
- ht = Z_OBJPROP_P(subject);
+ ht = zend_get_properties_for(subject, ZEND_PROP_PURPOSE_ARRAY_CAST);
} else if (Z_ISREF_P(subject)) {
subject = Z_REFVAL_P(subject);
goto try_again_subject;
result = 0;
}
+ if (Z_TYPE_P(subject) != IS_ARRAY) {
+ zend_release_properties(ht);
+ }
+
ZEND_VM_SMART_BRANCH(result, 1);
ZVAL_BOOL(EX_VAR(opline->result.var), result);