}
} else if (Z_IMMUTABLE_P(array_ref)) {
if (IS_CONST == IS_CV) {
- zval_copy_ctor(array_ref);
+ zval_copy_ctor_func(array_ref);
Z_ADDREF_P(array_ref);
} else {
- ZVAL_DUP(&tmp, array_ref);
+ ZVAL_COPY_VALUE(&tmp, array_ref);
+ zval_copy_ctor_func(&tmp);
array_ptr = array_ref = &tmp;
}
} else if (Z_REFCOUNTED_P(array_ref)) {
ZVAL_UNREF(array_ref);
array_ptr = array_ref;
}
- if (Z_IMMUTABLE_P(array_ptr) ||
- (Z_ISREF_P(array_ref) &&
- Z_REFCOUNTED_P(array_ptr) &&
- Z_REFCOUNT_P(array_ptr) > 1)) {
- if (!Z_IMMUTABLE_P(array_ptr)) {
- Z_DELREF_P(array_ptr);
- }
- zval_copy_ctor(array_ptr);
+ if (Z_IMMUTABLE_P(array_ptr)) {
+ zval_copy_ctor_func(array_ptr);
+ } else if (Z_ISREF_P(array_ref) &&
+ Z_COPYABLE_P(array_ptr) &&
+ Z_REFCOUNT_P(array_ptr) > 1) {
+ Z_DELREF_P(array_ptr);
+ zval_copy_ctor_func(array_ptr);
}
if (IS_CONST == IS_CV) {
Z_ADDREF_P(array_ref);
/* Temporary variables don't need ctor copying */
if (IS_CONST != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = NULL;
/* Temporary variables don't need ctor copying */
if (IS_CONST != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = NULL;
/* Temporary variables don't need ctor copying */
if (IS_CONST != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = NULL;
/* Temporary variables don't need ctor copying */
if (IS_CONST != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = NULL;
/* Temporary variables don't need ctor copying */
if (IS_CONST != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = NULL;
}
} else if (Z_IMMUTABLE_P(array_ref)) {
if (IS_TMP_VAR == IS_CV) {
- zval_copy_ctor(array_ref);
+ zval_copy_ctor_func(array_ref);
Z_ADDREF_P(array_ref);
} else {
- ZVAL_DUP(&tmp, array_ref);
+ ZVAL_COPY_VALUE(&tmp, array_ref);
+ zval_copy_ctor_func(&tmp);
array_ptr = array_ref = &tmp;
}
} else if (Z_REFCOUNTED_P(array_ref)) {
ZVAL_UNREF(array_ref);
array_ptr = array_ref;
}
- if (Z_IMMUTABLE_P(array_ptr) ||
- (Z_ISREF_P(array_ref) &&
- Z_REFCOUNTED_P(array_ptr) &&
- Z_REFCOUNT_P(array_ptr) > 1)) {
- if (!Z_IMMUTABLE_P(array_ptr)) {
- Z_DELREF_P(array_ptr);
- }
- zval_copy_ctor(array_ptr);
+ if (Z_IMMUTABLE_P(array_ptr)) {
+ zval_copy_ctor_func(array_ptr);
+ } else if (Z_ISREF_P(array_ref) &&
+ Z_COPYABLE_P(array_ptr) &&
+ Z_REFCOUNT_P(array_ptr) > 1) {
+ Z_DELREF_P(array_ptr);
+ zval_copy_ctor_func(array_ptr);
}
if (IS_TMP_VAR == IS_CV) {
Z_ADDREF_P(array_ref);
/* Temporary variables don't need ctor copying */
if (IS_TMP_VAR != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = NULL;
/* Temporary variables don't need ctor copying */
if (IS_TMP_VAR != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = NULL;
/* Temporary variables don't need ctor copying */
if (IS_TMP_VAR != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = NULL;
/* Temporary variables don't need ctor copying */
if (IS_TMP_VAR != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = NULL;
/* Temporary variables don't need ctor copying */
if (IS_TMP_VAR != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = NULL;
}
} else if (Z_IMMUTABLE_P(array_ref)) {
if (IS_VAR == IS_CV) {
- zval_copy_ctor(array_ref);
+ zval_copy_ctor_func(array_ref);
Z_ADDREF_P(array_ref);
} else {
- ZVAL_DUP(&tmp, array_ref);
+ ZVAL_COPY_VALUE(&tmp, array_ref);
+ zval_copy_ctor_func(&tmp);
array_ptr = array_ref = &tmp;
}
} else if (Z_REFCOUNTED_P(array_ref)) {
ZVAL_UNREF(array_ref);
array_ptr = array_ref;
}
- if (Z_IMMUTABLE_P(array_ptr) ||
- (Z_ISREF_P(array_ref) &&
- Z_REFCOUNTED_P(array_ptr) &&
- Z_REFCOUNT_P(array_ptr) > 1)) {
- if (!Z_IMMUTABLE_P(array_ptr)) {
- Z_DELREF_P(array_ptr);
- }
- zval_copy_ctor(array_ptr);
+ if (Z_IMMUTABLE_P(array_ptr)) {
+ zval_copy_ctor_func(array_ptr);
+ } else if (Z_ISREF_P(array_ref) &&
+ Z_COPYABLE_P(array_ptr) &&
+ Z_REFCOUNT_P(array_ptr) > 1) {
+ Z_DELREF_P(array_ptr);
+ zval_copy_ctor_func(array_ptr);
}
if (IS_VAR == IS_CV) {
Z_ADDREF_P(array_ref);
array = Z_REFVAL_P(array);
// TODO: referenced value might be changed to different array ???
if (Z_IMMUTABLE_P(array)) {
- zval_copy_ctor(array);
+ zval_copy_ctor_func(array);
}
}
/* Temporary variables don't need ctor copying */
if (IS_VAR != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
/* Temporary variables don't need ctor copying */
if (IS_VAR != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
/* Temporary variables don't need ctor copying */
if (IS_VAR != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
/* Temporary variables don't need ctor copying */
if (IS_VAR != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
/* Temporary variables don't need ctor copying */
if (IS_VAR != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
/* Temporary variables don't need ctor copying */
if (IS_UNUSED != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = NULL;
/* Temporary variables don't need ctor copying */
if (IS_UNUSED != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = NULL;
/* Temporary variables don't need ctor copying */
if (IS_UNUSED != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = NULL;
/* Temporary variables don't need ctor copying */
if (IS_UNUSED != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = NULL;
/* Temporary variables don't need ctor copying */
if (IS_UNUSED != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = NULL;
}
} else if (Z_IMMUTABLE_P(array_ref)) {
if (IS_CV == IS_CV) {
- zval_copy_ctor(array_ref);
+ zval_copy_ctor_func(array_ref);
Z_ADDREF_P(array_ref);
} else {
- ZVAL_DUP(&tmp, array_ref);
+ ZVAL_COPY_VALUE(&tmp, array_ref);
+ zval_copy_ctor_func(&tmp);
array_ptr = array_ref = &tmp;
}
} else if (Z_REFCOUNTED_P(array_ref)) {
ZVAL_UNREF(array_ref);
array_ptr = array_ref;
}
- if (Z_IMMUTABLE_P(array_ptr) ||
- (Z_ISREF_P(array_ref) &&
- Z_REFCOUNTED_P(array_ptr) &&
- Z_REFCOUNT_P(array_ptr) > 1)) {
- if (!Z_IMMUTABLE_P(array_ptr)) {
- Z_DELREF_P(array_ptr);
- }
- zval_copy_ctor(array_ptr);
+ if (Z_IMMUTABLE_P(array_ptr)) {
+ zval_copy_ctor_func(array_ptr);
+ } else if (Z_ISREF_P(array_ref) &&
+ Z_COPYABLE_P(array_ptr) &&
+ Z_REFCOUNT_P(array_ptr) > 1) {
+ Z_DELREF_P(array_ptr);
+ zval_copy_ctor_func(array_ptr);
}
if (IS_CV == IS_CV) {
Z_ADDREF_P(array_ref);
/* Temporary variables don't need ctor copying */
if (IS_CV != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = _get_zval_ptr_cv_BP_VAR_W(execute_data, opline->op1.var TSRMLS_CC);
/* Temporary variables don't need ctor copying */
if (IS_CV != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = _get_zval_ptr_cv_BP_VAR_W(execute_data, opline->op1.var TSRMLS_CC);
/* Temporary variables don't need ctor copying */
if (IS_CV != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = _get_zval_ptr_cv_BP_VAR_W(execute_data, opline->op1.var TSRMLS_CC);
/* Temporary variables don't need ctor copying */
if (IS_CV != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = _get_zval_ptr_cv_BP_VAR_W(execute_data, opline->op1.var TSRMLS_CC);
/* Temporary variables don't need ctor copying */
if (IS_CV != IS_TMP_VAR) {
- zval_copy_ctor(&generator->value);
+ zval_opt_copy_ctor(&generator->value);
}
} else {
zval *value_ptr = _get_zval_ptr_cv_BP_VAR_W(execute_data, opline->op1.var TSRMLS_CC);