SAVE_OPLINE();
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
+ } else if ((IS_CONST & (IS_VAR|IS_CV)) && UNEXPECTED(Z_ISREF_P(op1))) {
+ /* Don't keep lock on reference, lock the value instead */
+ if (UNEXPECTED(Z_REFCOUNT_P(op1) == 1)) {
+ ZVAL_UNREF(op1);
+ } else {
+ Z_DELREF_P(op1);
+ ZVAL_COPY(op1, Z_REFVAL_P(op1));
+ }
}
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
SAVE_OPLINE();
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
+ } else if ((IS_CONST & (IS_VAR|IS_CV)) && UNEXPECTED(Z_ISREF_P(op1))) {
+ /* Don't keep lock on reference, lock the value instead */
+ if (UNEXPECTED(Z_REFCOUNT_P(op1) == 1)) {
+ ZVAL_UNREF(op1);
+ } else {
+ Z_DELREF_P(op1);
+ ZVAL_COPY(op1, Z_REFVAL_P(op1));
+ }
}
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
SAVE_OPLINE();
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
+ } else if ((IS_CONST & (IS_VAR|IS_CV)) && UNEXPECTED(Z_ISREF_P(op1))) {
+ /* Don't keep lock on reference, lock the value instead */
+ if (UNEXPECTED(Z_REFCOUNT_P(op1) == 1)) {
+ ZVAL_UNREF(op1);
+ } else {
+ Z_DELREF_P(op1);
+ ZVAL_COPY(op1, Z_REFVAL_P(op1));
+ }
}
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
SAVE_OPLINE();
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
+ } else if ((IS_CV & (IS_VAR|IS_CV)) && UNEXPECTED(Z_ISREF_P(op1))) {
+ /* Don't keep lock on reference, lock the value instead */
+ if (UNEXPECTED(Z_REFCOUNT_P(op1) == 1)) {
+ ZVAL_UNREF(op1);
+ } else {
+ Z_DELREF_P(op1);
+ ZVAL_COPY(op1, Z_REFVAL_P(op1));
+ }
}
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
SAVE_OPLINE();
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
+ } else if ((IS_CV & (IS_VAR|IS_CV)) && UNEXPECTED(Z_ISREF_P(op1))) {
+ /* Don't keep lock on reference, lock the value instead */
+ if (UNEXPECTED(Z_REFCOUNT_P(op1) == 1)) {
+ ZVAL_UNREF(op1);
+ } else {
+ Z_DELREF_P(op1);
+ ZVAL_COPY(op1, Z_REFVAL_P(op1));
+ }
}
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
SAVE_OPLINE();
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
+ } else if ((IS_CV & (IS_VAR|IS_CV)) && UNEXPECTED(Z_ISREF_P(op1))) {
+ /* Don't keep lock on reference, lock the value instead */
+ if (UNEXPECTED(Z_REFCOUNT_P(op1) == 1)) {
+ ZVAL_UNREF(op1);
+ } else {
+ Z_DELREF_P(op1);
+ ZVAL_COPY(op1, Z_REFVAL_P(op1));
+ }
}
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
+ } else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && UNEXPECTED(Z_ISREF_P(op1))) {
+ /* Don't keep lock on reference, lock the value instead */
+ if (UNEXPECTED(Z_REFCOUNT_P(op1) == 1)) {
+ ZVAL_UNREF(op1);
+ } else {
+ Z_DELREF_P(op1);
+ ZVAL_COPY(op1, Z_REFVAL_P(op1));
+ }
}
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
+ } else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && UNEXPECTED(Z_ISREF_P(op1))) {
+ /* Don't keep lock on reference, lock the value instead */
+ if (UNEXPECTED(Z_REFCOUNT_P(op1) == 1)) {
+ ZVAL_UNREF(op1);
+ } else {
+ Z_DELREF_P(op1);
+ ZVAL_COPY(op1, Z_REFVAL_P(op1));
+ }
}
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
+ } else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && UNEXPECTED(Z_ISREF_P(op1))) {
+ /* Don't keep lock on reference, lock the value instead */
+ if (UNEXPECTED(Z_REFCOUNT_P(op1) == 1)) {
+ ZVAL_UNREF(op1);
+ } else {
+ Z_DELREF_P(op1);
+ ZVAL_COPY(op1, Z_REFVAL_P(op1));
+ }
}
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);