if (OP1_TYPE != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
if (OP2_TYPE == IS_CONST) {
- zend_string_addref(op2_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
+ GC_ADDREF(op2_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op2_str);
zend_string_release(op1_str);
if (OP2_TYPE != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
if (OP1_TYPE == IS_CONST) {
- zend_string_addref(op1_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
+ GC_ADDREF(op1_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op1_str);
zend_string_release(op2_str);
rope = (zend_string**)EX_VAR(opline->result.var);
if (OP2_TYPE == IS_CONST) {
var = GET_OP2_ZVAL_PTR(BP_VAR_R);
- rope[0] = zend_string_copy(Z_STR_P(var));
+ rope[0] = Z_STR_P(var);
+ if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
+ Z_ADDREF_P(Z_STR_P(var));
+ }
} else {
var = GET_OP2_ZVAL_PTR_UNDEF(BP_VAR_R);
if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
rope = (zend_string**)EX_VAR(opline->op1.var);
if (OP2_TYPE == IS_CONST) {
var = GET_OP2_ZVAL_PTR(BP_VAR_R);
- rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
+ rope[opline->extended_value] = Z_STR_P(var);
+ if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
+ Z_ADDREF_P(var);
+ }
} else {
var = GET_OP2_ZVAL_PTR_UNDEF(BP_VAR_R);
if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
rope = (zend_string**)EX_VAR(opline->op1.var);
if (OP2_TYPE == IS_CONST) {
var = GET_OP2_ZVAL_PTR(BP_VAR_R);
- rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
+ rope[opline->extended_value] = Z_STR_P(var);
+ if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
+ Z_ADDREF_P(var);
+ }
} else {
var = GET_OP2_ZVAL_PTR_UNDEF(BP_VAR_R);
if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
if (IS_CONST != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
if (IS_CONST == IS_CONST) {
- zend_string_addref(op2_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
+ GC_ADDREF(op2_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op2_str);
zend_string_release(op1_str);
if (IS_CONST != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
if (IS_CONST == IS_CONST) {
- zend_string_addref(op1_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
+ GC_ADDREF(op1_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op1_str);
zend_string_release(op2_str);
if (IS_CONST != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
if (IS_CV == IS_CONST) {
- zend_string_addref(op2_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
+ GC_ADDREF(op2_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op2_str);
zend_string_release(op1_str);
if (IS_CV != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
if (IS_CONST == IS_CONST) {
- zend_string_addref(op1_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
+ GC_ADDREF(op1_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op1_str);
zend_string_release(op2_str);
if (IS_CONST != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
- zend_string_addref(op2_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
+ GC_ADDREF(op2_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op2_str);
zend_string_release(op1_str);
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
if (IS_CONST == IS_CONST) {
- zend_string_addref(op1_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
+ GC_ADDREF(op1_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op1_str);
zend_string_release(op2_str);
rope = (zend_string**)EX_VAR(opline->op1.var);
if (IS_CONST == IS_CONST) {
var = RT_CONSTANT(opline, opline->op2);
- rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
+ rope[opline->extended_value] = Z_STR_P(var);
+ if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
+ Z_ADDREF_P(var);
+ }
} else {
var = RT_CONSTANT(opline, opline->op2);
if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
rope = (zend_string**)EX_VAR(opline->op1.var);
if (IS_CONST == IS_CONST) {
var = RT_CONSTANT(opline, opline->op2);
- rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
+ rope[opline->extended_value] = Z_STR_P(var);
+ if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
+ Z_ADDREF_P(var);
+ }
} else {
var = RT_CONSTANT(opline, opline->op2);
if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
rope = (zend_string**)EX_VAR(opline->op1.var);
if (IS_CV == IS_CONST) {
var = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
- rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
+ rope[opline->extended_value] = Z_STR_P(var);
+ if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
+ Z_ADDREF_P(var);
+ }
} else {
var = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
rope = (zend_string**)EX_VAR(opline->op1.var);
if (IS_CV == IS_CONST) {
var = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
- rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
+ rope[opline->extended_value] = Z_STR_P(var);
+ if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
+ Z_ADDREF_P(var);
+ }
} else {
var = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
rope = (zend_string**)EX_VAR(opline->op1.var);
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
var = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
- rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
+ rope[opline->extended_value] = Z_STR_P(var);
+ if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
+ Z_ADDREF_P(var);
+ }
} else {
var = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
rope = (zend_string**)EX_VAR(opline->op1.var);
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
var = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
- rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
+ rope[opline->extended_value] = Z_STR_P(var);
+ if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
+ Z_ADDREF_P(var);
+ }
} else {
var = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
rope = (zend_string**)EX_VAR(opline->result.var);
if (IS_CONST == IS_CONST) {
var = RT_CONSTANT(opline, opline->op2);
- rope[0] = zend_string_copy(Z_STR_P(var));
+ rope[0] = Z_STR_P(var);
+ if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
+ Z_ADDREF_P(Z_STR_P(var));
+ }
} else {
var = RT_CONSTANT(opline, opline->op2);
if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
rope = (zend_string**)EX_VAR(opline->result.var);
if (IS_CV == IS_CONST) {
var = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
- rope[0] = zend_string_copy(Z_STR_P(var));
+ rope[0] = Z_STR_P(var);
+ if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
+ Z_ADDREF_P(Z_STR_P(var));
+ }
} else {
var = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
rope = (zend_string**)EX_VAR(opline->result.var);
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
var = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
- rope[0] = zend_string_copy(Z_STR_P(var));
+ rope[0] = Z_STR_P(var);
+ if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
+ Z_ADDREF_P(Z_STR_P(var));
+ }
} else {
var = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
if (IS_CV != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
if (IS_CONST == IS_CONST) {
- zend_string_addref(op2_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
+ GC_ADDREF(op2_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op2_str);
zend_string_release(op1_str);
if (IS_CONST != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
if (IS_CV == IS_CONST) {
- zend_string_addref(op1_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
+ GC_ADDREF(op1_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op1_str);
zend_string_release(op2_str);
if (IS_CV != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
if (IS_CV == IS_CONST) {
- zend_string_addref(op2_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
+ GC_ADDREF(op2_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op2_str);
zend_string_release(op1_str);
if (IS_CV != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
if (IS_CV == IS_CONST) {
- zend_string_addref(op1_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
+ GC_ADDREF(op1_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op1_str);
zend_string_release(op2_str);
if (IS_CV != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
- zend_string_addref(op2_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
+ GC_ADDREF(op2_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op2_str);
zend_string_release(op1_str);
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
if (IS_CV == IS_CONST) {
- zend_string_addref(op1_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
+ GC_ADDREF(op1_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op1_str);
zend_string_release(op2_str);
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
if (IS_CONST == IS_CONST) {
- zend_string_addref(op2_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
+ GC_ADDREF(op2_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op2_str);
zend_string_release(op1_str);
if (IS_CONST != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
- zend_string_addref(op1_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
+ GC_ADDREF(op1_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op1_str);
zend_string_release(op2_str);
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
if (IS_CV == IS_CONST) {
- zend_string_addref(op2_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
+ GC_ADDREF(op2_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op2_str);
zend_string_release(op1_str);
if (IS_CV != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
- zend_string_addref(op1_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
+ GC_ADDREF(op1_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op1_str);
zend_string_release(op2_str);
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
- zend_string_addref(op2_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
+ GC_ADDREF(op2_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op2_str);
zend_string_release(op1_str);
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
- zend_string_addref(op1_str);
+ if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
+ GC_ADDREF(op1_str);
+ }
}
ZVAL_STR(EX_VAR(opline->result.var), op1_str);
zend_string_release(op2_str);