zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = RT_CONSTANT((opline+1), (opline+1)->op1);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
value = zend_assign_to_variable(prop, value, IS_CONST, EX_USES_STRICT_TYPES());
}
zend_free_op free_op_data;
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
+ zval_ptr_dtor_nogc(free_op_data);
} else {
value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
}
zend_free_op free_op_data;
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
+ zval_ptr_dtor_nogc(free_op_data);
} else {
value = zend_assign_to_variable(prop, value, IS_VAR, EX_USES_STRICT_TYPES());
}
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
- value = &tmp;
- if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
value = zend_assign_to_variable(prop, value, IS_CV, EX_USES_STRICT_TYPES());
}
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = RT_CONSTANT((opline+1), (opline+1)->op1);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
- value = &tmp;
- if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
value = zend_assign_to_variable(prop, value, IS_CONST, EX_USES_STRICT_TYPES());
}
zend_free_op free_op_data;
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
+ zval_ptr_dtor_nogc(free_op_data);
} else {
value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
}
zend_free_op free_op_data;
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
+ zval_ptr_dtor_nogc(free_op_data);
} else {
value = zend_assign_to_variable(prop, value, IS_VAR, EX_USES_STRICT_TYPES());
}
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
value = zend_assign_to_variable(prop, value, IS_CV, EX_USES_STRICT_TYPES());
}
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = RT_CONSTANT((opline+1), (opline+1)->op1);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
- value = &tmp;
- if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
value = zend_assign_to_variable(prop, value, IS_CONST, EX_USES_STRICT_TYPES());
}
zend_free_op free_op_data;
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
+ zval_ptr_dtor_nogc(free_op_data);
} else {
value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
}
zend_free_op free_op_data;
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
+ zval_ptr_dtor_nogc(free_op_data);
} else {
value = zend_assign_to_variable(prop, value, IS_VAR, EX_USES_STRICT_TYPES());
}
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
value = zend_assign_to_variable(prop, value, IS_CV, EX_USES_STRICT_TYPES());
}
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = RT_CONSTANT((opline+1), (opline+1)->op1);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
value = zend_assign_to_variable(prop, value, IS_CONST, EX_USES_STRICT_TYPES());
}
zend_free_op free_op_data;
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
+ zval_ptr_dtor_nogc(free_op_data);
} else {
value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
}
zend_free_op free_op_data;
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
+ zval_ptr_dtor_nogc(free_op_data);
} else {
value = zend_assign_to_variable(prop, value, IS_VAR, EX_USES_STRICT_TYPES());
}
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
value = zend_assign_to_variable(prop, value, IS_CV, EX_USES_STRICT_TYPES());
}
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = RT_CONSTANT((opline+1), (opline+1)->op1);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
value = zend_assign_to_variable(prop, value, IS_CONST, EX_USES_STRICT_TYPES());
}
zend_free_op free_op_data;
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
+ zval_ptr_dtor_nogc(free_op_data);
} else {
value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
}
zend_free_op free_op_data;
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
+ zval_ptr_dtor_nogc(free_op_data);
} else {
value = zend_assign_to_variable(prop, value, IS_VAR, EX_USES_STRICT_TYPES());
}
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
value = zend_assign_to_variable(prop, value, IS_CV, EX_USES_STRICT_TYPES());
}
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = RT_CONSTANT((opline+1), (opline+1)->op1);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
value = zend_assign_to_variable(prop, value, IS_CONST, EX_USES_STRICT_TYPES());
}
zend_free_op free_op_data;
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
+ zval_ptr_dtor_nogc(free_op_data);
} else {
value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
}
zend_free_op free_op_data;
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
+ zval_ptr_dtor_nogc(free_op_data);
} else {
value = zend_assign_to_variable(prop, value, IS_VAR, EX_USES_STRICT_TYPES());
}
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
value = zend_assign_to_variable(prop, value, IS_CV, EX_USES_STRICT_TYPES());
}
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ zend_uchar orig_type = IS_UNDEF;
- if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_CONST == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_CONST == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_CONST == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
- value = &tmp;
- if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_CONST, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ zend_uchar orig_type = IS_UNDEF;
- if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_TMP_VAR == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_TMP_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_TMP_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
-
- value = &tmp;
- if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ zval_ptr_dtor_nogc(free_op_data);
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ zend_uchar orig_type = IS_UNDEF;
- if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_VAR == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
-
- value = &tmp;
- if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ zval_ptr_dtor_nogc(free_op_data);
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_VAR, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ zend_uchar orig_type = IS_UNDEF;
- if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_CV == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_CV == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_CV == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
- value = &tmp;
- if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_CV, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- zval_ptr_dtor_nogc(free_op2);
- if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ zend_uchar orig_type = IS_UNDEF;
+
+ if (IS_CONST == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_CONST == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_CONST == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
- value = &tmp;
- if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_CONST, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- zval_ptr_dtor_nogc(free_op2);
- if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ zend_uchar orig_type = IS_UNDEF;
+
+ if (IS_TMP_VAR == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_TMP_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_TMP_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
-
- value = &tmp;
- if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ zval_ptr_dtor_nogc(free_op_data);
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- zval_ptr_dtor_nogc(free_op2);
- if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ zend_uchar orig_type = IS_UNDEF;
+
+ if (IS_VAR == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
-
- value = &tmp;
- if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ zval_ptr_dtor_nogc(free_op_data);
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_VAR, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- zval_ptr_dtor_nogc(free_op2);
- if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ zend_uchar orig_type = IS_UNDEF;
+
+ if (IS_CV == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_CV == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_CV == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
- value = &tmp;
- if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_CV, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ zend_uchar orig_type = IS_UNDEF;
- if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_CONST == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_CONST == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_CONST == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
- value = &tmp;
- if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_CONST, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ zend_uchar orig_type = IS_UNDEF;
- if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_TMP_VAR == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_TMP_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_TMP_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
-
- value = &tmp;
- if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ zval_ptr_dtor_nogc(free_op_data);
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ zend_uchar orig_type = IS_UNDEF;
- if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_VAR == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
-
- value = &tmp;
- if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ zval_ptr_dtor_nogc(free_op_data);
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_VAR, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ zend_uchar orig_type = IS_UNDEF;
- if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_CV == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_CV == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_CV == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
- value = &tmp;
- if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_CV, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ zend_uchar orig_type = IS_UNDEF;
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_CONST == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_CONST == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_CONST == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
- value = &tmp;
- if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_CONST, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
+ zend_uchar orig_type = IS_UNDEF;
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_TMP_VAR == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_TMP_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_TMP_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
-
- value = &tmp;
- if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ zval_ptr_dtor_nogc(free_op_data);
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ zend_uchar orig_type = IS_UNDEF;
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_VAR == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
-
- value = &tmp;
- if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ zval_ptr_dtor_nogc(free_op_data);
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_VAR, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
+ zend_uchar orig_type = IS_UNDEF;
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_CV == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_CV == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_CV == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
- value = &tmp;
- if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_CV, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- zval_ptr_dtor_nogc(free_op2);
+ zend_uchar orig_type = IS_UNDEF;
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_CONST == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_CONST == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_CONST == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
- value = &tmp;
- if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_CONST, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- zval_ptr_dtor_nogc(free_op2);
+ zend_uchar orig_type = IS_UNDEF;
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_TMP_VAR == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_TMP_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_TMP_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
-
- value = &tmp;
- if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ zval_ptr_dtor_nogc(free_op_data);
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- zval_ptr_dtor_nogc(free_op2);
+ zend_uchar orig_type = IS_UNDEF;
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_VAR == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
-
- value = &tmp;
- if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ zval_ptr_dtor_nogc(free_op_data);
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_VAR, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- zval_ptr_dtor_nogc(free_op2);
+ zend_uchar orig_type = IS_UNDEF;
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_CV == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_CV == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_CV == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
- value = &tmp;
- if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_CV, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ zend_uchar orig_type = IS_UNDEF;
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_CONST == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_CONST == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_CONST == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
- value = &tmp;
- if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_CONST, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
+ zend_uchar orig_type = IS_UNDEF;
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_TMP_VAR == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_TMP_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_TMP_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
-
- value = &tmp;
- if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ zval_ptr_dtor_nogc(free_op_data);
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ zend_uchar orig_type = IS_UNDEF;
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_VAR == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
-
- value = &tmp;
- if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ zval_ptr_dtor_nogc(free_op_data);
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_VAR, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
+ zend_uchar orig_type = IS_UNDEF;
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_CV == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_CV == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_CV == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
- value = &tmp;
- if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_CV, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ zend_uchar orig_type = IS_UNDEF;
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_CONST == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_CONST == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_CONST == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
- value = &tmp;
- if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_CONST, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
+ zend_uchar orig_type = IS_UNDEF;
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_TMP_VAR == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_TMP_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_TMP_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
-
- value = &tmp;
- if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ zval_ptr_dtor_nogc(free_op_data);
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ zend_uchar orig_type = IS_UNDEF;
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_VAR == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
-
- value = &tmp;
- if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ zval_ptr_dtor_nogc(free_op_data);
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_VAR, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
+ zend_uchar orig_type = IS_UNDEF;
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_CV == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_CV == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_CV == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
- value = &tmp;
- if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_CV, EX_USES_STRICT_TYPES());
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = RT_CONSTANT((opline+1), (opline+1)->op1);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
value = zend_assign_to_variable(prop, value, IS_CONST, EX_USES_STRICT_TYPES());
}
zend_free_op free_op_data;
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
+ zval_ptr_dtor_nogc(free_op_data);
} else {
value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
}
zend_free_op free_op_data;
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
+ zval_ptr_dtor_nogc(free_op_data);
} else {
value = zend_assign_to_variable(prop, value, IS_VAR, EX_USES_STRICT_TYPES());
}
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
- value = &tmp;
- if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
value = zend_assign_to_variable(prop, value, IS_CV, EX_USES_STRICT_TYPES());
}
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- zval_ptr_dtor_nogc(free_op2);
+ zend_uchar orig_type = IS_UNDEF;
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_CONST == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_CONST == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_CONST == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
- value = &tmp;
- if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_CONST, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- zval_ptr_dtor_nogc(free_op2);
+ zend_uchar orig_type = IS_UNDEF;
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_TMP_VAR == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_TMP_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_TMP_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
-
- value = &tmp;
- if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ zval_ptr_dtor_nogc(free_op_data);
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- zval_ptr_dtor_nogc(free_op2);
+ zend_uchar orig_type = IS_UNDEF;
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_VAR == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
-
- value = &tmp;
- if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ zval_ptr_dtor_nogc(free_op_data);
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_VAR, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- zval_ptr_dtor_nogc(free_op2);
+ zend_uchar orig_type = IS_UNDEF;
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_CV == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_CV == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_CV == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
- value = &tmp;
- if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_CV, EX_USES_STRICT_TYPES());
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = RT_CONSTANT((opline+1), (opline+1)->op1);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
value = zend_assign_to_variable(prop, value, IS_CONST, EX_USES_STRICT_TYPES());
}
zend_free_op free_op_data;
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
+ zval_ptr_dtor_nogc(free_op_data);
} else {
value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
}
zend_free_op free_op_data;
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
+ zval_ptr_dtor_nogc(free_op_data);
} else {
value = zend_assign_to_variable(prop, value, IS_VAR, EX_USES_STRICT_TYPES());
}
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
value = zend_assign_to_variable(prop, value, IS_CV, EX_USES_STRICT_TYPES());
}
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = RT_CONSTANT((opline+1), (opline+1)->op1);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
- value = &tmp;
- if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
value = zend_assign_to_variable(prop, value, IS_CONST, EX_USES_STRICT_TYPES());
}
zend_free_op free_op_data;
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
+ zval_ptr_dtor_nogc(free_op_data);
} else {
value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
}
zend_free_op free_op_data;
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
-
- value = &tmp;
- if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
+ zval_ptr_dtor_nogc(free_op_data);
} else {
value = zend_assign_to_variable(prop, value, IS_VAR, EX_USES_STRICT_TYPES());
}
zval *prop, *value;
zend_property_info *prop_info;
- zval tmp;
SAVE_OPLINE();
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
if (UNEXPECTED(prop_info->type)) {
- zend_reference *ref = NULL;
- if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
- }
+ value = zend_assign_to_typed_prop(prop_info, prop, value EXECUTE_DATA_CC);
- value = &tmp;
- if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
value = zend_assign_to_variable(prop, value, IS_CV, EX_USES_STRICT_TYPES());
}
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ zend_uchar orig_type = IS_UNDEF;
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_CONST == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_CONST == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_CONST == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
- value = &tmp;
- if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_CONST, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
+ zend_uchar orig_type = IS_UNDEF;
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_TMP_VAR == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_TMP_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_TMP_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
-
- value = &tmp;
- if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ zval_ptr_dtor_nogc(free_op_data);
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
+ zend_uchar orig_type = IS_UNDEF;
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_VAR == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_VAR == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
-
- value = &tmp;
- if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ zval_ptr_dtor_nogc(free_op_data);
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_VAR, EX_USES_STRICT_TYPES());
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
- zval tmp;
if (UNEXPECTED(prop_info != NULL)) {
- zend_reference *ref = NULL;
- if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
- ref = Z_REF_P(value);
- value = Z_REFVAL_P(value);
- }
- if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
- ZVAL_COPY(&tmp, value);
- } else {
- ZVAL_COPY_VALUE(&tmp, value);
- }
- if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
- zval_ptr_dtor(value);
- if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
+ zend_uchar orig_type = IS_UNDEF;
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ if (IS_CV == IS_CONST) {
+ orig_type = Z_TYPE_P(value);
}
+ value = zend_assign_to_typed_prop(prop_info, property_val, value EXECUTE_DATA_CC);
+
/* will remain valid, thus no need to check prop_info in future here */
- if (IS_CV == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ if (IS_CV == IS_CONST && Z_TYPE_P(value) == orig_type) {
CACHE_PTR_EX(cache_slot + 2, NULL);
}
- value = &tmp;
- if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
- efree(ref);
- }
-
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
} else {
fast_assign_obj:
value = zend_assign_to_variable(property_val, value, IS_CV, EX_USES_STRICT_TYPES());