{
zend_op *opline = EX(opline);
zend_free_op free_op1;
- int ret = i_zend_is_true(GET_OP1_ZVAL_PTR(BP_VAR_R));
+ zval *val = GET_OP1_ZVAL_PTR(BP_VAR_R);
+ int ret;
- FREE_OP1();
+ if (OP1_TYPE == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ ret = Z_LVAL_P(val);
+ } else {
+ ret = i_zend_is_true(val);
+ FREE_OP1();
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
if (!ret) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
{
zend_op *opline = EX(opline);
zend_free_op free_op1;
- int ret = i_zend_is_true(GET_OP1_ZVAL_PTR(BP_VAR_R));
+ zval *val = GET_OP1_ZVAL_PTR(BP_VAR_R);
+ int ret;
- FREE_OP1();
+ if (OP1_TYPE == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ ret = Z_LVAL_P(val);
+ } else {
+ ret = i_zend_is_true(val);
+ FREE_OP1();
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
if (ret) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
{
zend_op *opline = EX(opline);
zend_free_op free_op1;
- int retval = i_zend_is_true(GET_OP1_ZVAL_PTR(BP_VAR_R));
+ zval *val = GET_OP1_ZVAL_PTR(BP_VAR_R);
+ int retval;
- FREE_OP1();
-
- if (UNEXPECTED(EG(exception) != NULL)) {
- ZEND_VM_CONTINUE();
- } else if (EXPECTED(retval != 0)) {
+ if (OP1_TYPE == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ retval = Z_LVAL_P(val);
+ } else {
+ retval = i_zend_is_true(val);
+ FREE_OP1();
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
+ if (EXPECTED(retval != 0)) {
#if DEBUG_ZEND>=2
printf("Conditional jmp on true to %d\n", opline->extended_value);
#endif
{
zend_op *opline = EX(opline);
zend_free_op free_op1;
- int retval = i_zend_is_true(GET_OP1_ZVAL_PTR(BP_VAR_R));
+ zval *val = GET_OP1_ZVAL_PTR(BP_VAR_R);
+ int retval;
- FREE_OP1();
+ if (OP1_TYPE == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ retval = Z_LVAL_P(val);
+ } else {
+ retval = i_zend_is_true(val);
+ FREE_OP1();
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
Z_LVAL(EX_T(opline->result.u.var).tmp_var) = retval;
Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
if (!retval) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
}
{
zend_op *opline = EX(opline);
zend_free_op free_op1;
- int retval = i_zend_is_true(GET_OP1_ZVAL_PTR(BP_VAR_R));
+ zval *val = GET_OP1_ZVAL_PTR(BP_VAR_R);
+ int retval;
- FREE_OP1();
+ if (OP1_TYPE == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ retval = Z_LVAL_P(val);
+ } else {
+ retval = i_zend_is_true(val);
+ FREE_OP1();
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
Z_LVAL(EX_T(opline->result.u.var).tmp_var) = retval;
Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
if (retval) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
}
{
zend_op *opline = EX(opline);
- int ret = i_zend_is_true(&opline->op1.u.constant);
+ zval *val = &opline->op1.u.constant;
+ int ret;
+ if (IS_CONST == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ ret = Z_LVAL_P(val);
+ } else {
+ ret = i_zend_is_true(val);
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
if (!ret) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
{
zend_op *opline = EX(opline);
- int ret = i_zend_is_true(&opline->op1.u.constant);
+ zval *val = &opline->op1.u.constant;
+ int ret;
+ if (IS_CONST == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ ret = Z_LVAL_P(val);
+ } else {
+ ret = i_zend_is_true(val);
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
if (ret) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
{
zend_op *opline = EX(opline);
- int retval = i_zend_is_true(&opline->op1.u.constant);
+ zval *val = &opline->op1.u.constant;
+ int retval;
- if (UNEXPECTED(EG(exception) != NULL)) {
- ZEND_VM_CONTINUE();
- } else if (EXPECTED(retval != 0)) {
+ if (IS_CONST == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ retval = Z_LVAL_P(val);
+ } else {
+ retval = i_zend_is_true(val);
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
+ if (EXPECTED(retval != 0)) {
#if DEBUG_ZEND>=2
printf("Conditional jmp on true to %d\n", opline->extended_value);
#endif
{
zend_op *opline = EX(opline);
- int retval = i_zend_is_true(&opline->op1.u.constant);
+ zval *val = &opline->op1.u.constant;
+ int retval;
+
+ if (IS_CONST == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ retval = Z_LVAL_P(val);
+ } else {
+ retval = i_zend_is_true(val);
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
Z_LVAL(EX_T(opline->result.u.var).tmp_var) = retval;
Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
if (!retval) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
}
{
zend_op *opline = EX(opline);
- int retval = i_zend_is_true(&opline->op1.u.constant);
+ zval *val = &opline->op1.u.constant;
+ int retval;
+ if (IS_CONST == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ retval = Z_LVAL_P(val);
+ } else {
+ retval = i_zend_is_true(val);
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
Z_LVAL(EX_T(opline->result.u.var).tmp_var) = retval;
Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
if (retval) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
}
{
zend_op *opline = EX(opline);
zend_free_op free_op1;
- int ret = i_zend_is_true(_get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC));
+ zval *val = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
+ int ret;
- zval_dtor(free_op1.var);
+ if (IS_TMP_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ ret = Z_LVAL_P(val);
+ } else {
+ ret = i_zend_is_true(val);
+ zval_dtor(free_op1.var);
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
if (!ret) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
{
zend_op *opline = EX(opline);
zend_free_op free_op1;
- int ret = i_zend_is_true(_get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC));
+ zval *val = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
+ int ret;
- zval_dtor(free_op1.var);
+ if (IS_TMP_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ ret = Z_LVAL_P(val);
+ } else {
+ ret = i_zend_is_true(val);
+ zval_dtor(free_op1.var);
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
if (ret) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
{
zend_op *opline = EX(opline);
zend_free_op free_op1;
- int retval = i_zend_is_true(_get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC));
-
- zval_dtor(free_op1.var);
+ zval *val = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
+ int retval;
- if (UNEXPECTED(EG(exception) != NULL)) {
- ZEND_VM_CONTINUE();
- } else if (EXPECTED(retval != 0)) {
+ if (IS_TMP_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ retval = Z_LVAL_P(val);
+ } else {
+ retval = i_zend_is_true(val);
+ zval_dtor(free_op1.var);
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
+ if (EXPECTED(retval != 0)) {
#if DEBUG_ZEND>=2
printf("Conditional jmp on true to %d\n", opline->extended_value);
#endif
{
zend_op *opline = EX(opline);
zend_free_op free_op1;
- int retval = i_zend_is_true(_get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC));
+ zval *val = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
+ int retval;
- zval_dtor(free_op1.var);
+ if (IS_TMP_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ retval = Z_LVAL_P(val);
+ } else {
+ retval = i_zend_is_true(val);
+ zval_dtor(free_op1.var);
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
Z_LVAL(EX_T(opline->result.u.var).tmp_var) = retval;
Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
if (!retval) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
}
{
zend_op *opline = EX(opline);
zend_free_op free_op1;
- int retval = i_zend_is_true(_get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC));
+ zval *val = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
+ int retval;
- zval_dtor(free_op1.var);
+ if (IS_TMP_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ retval = Z_LVAL_P(val);
+ } else {
+ retval = i_zend_is_true(val);
+ zval_dtor(free_op1.var);
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
Z_LVAL(EX_T(opline->result.u.var).tmp_var) = retval;
Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
if (retval) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
}
{
zend_op *opline = EX(opline);
zend_free_op free_op1;
- int ret = i_zend_is_true(_get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC));
+ zval *val = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
+ int ret;
- if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+ if (IS_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ ret = Z_LVAL_P(val);
+ } else {
+ ret = i_zend_is_true(val);
+ if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
if (!ret) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
{
zend_op *opline = EX(opline);
zend_free_op free_op1;
- int ret = i_zend_is_true(_get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC));
+ zval *val = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
+ int ret;
- if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+ if (IS_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ ret = Z_LVAL_P(val);
+ } else {
+ ret = i_zend_is_true(val);
+ if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
if (ret) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
{
zend_op *opline = EX(opline);
zend_free_op free_op1;
- int retval = i_zend_is_true(_get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC));
+ zval *val = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
+ int retval;
- if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
-
- if (UNEXPECTED(EG(exception) != NULL)) {
- ZEND_VM_CONTINUE();
- } else if (EXPECTED(retval != 0)) {
+ if (IS_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ retval = Z_LVAL_P(val);
+ } else {
+ retval = i_zend_is_true(val);
+ if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
+ if (EXPECTED(retval != 0)) {
#if DEBUG_ZEND>=2
printf("Conditional jmp on true to %d\n", opline->extended_value);
#endif
{
zend_op *opline = EX(opline);
zend_free_op free_op1;
- int retval = i_zend_is_true(_get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC));
+ zval *val = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
+ int retval;
- if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+ if (IS_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ retval = Z_LVAL_P(val);
+ } else {
+ retval = i_zend_is_true(val);
+ if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
Z_LVAL(EX_T(opline->result.u.var).tmp_var) = retval;
Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
if (!retval) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
}
{
zend_op *opline = EX(opline);
zend_free_op free_op1;
- int retval = i_zend_is_true(_get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC));
+ zval *val = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
+ int retval;
- if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+ if (IS_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ retval = Z_LVAL_P(val);
+ } else {
+ retval = i_zend_is_true(val);
+ if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
Z_LVAL(EX_T(opline->result.u.var).tmp_var) = retval;
Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
if (retval) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
}
{
zend_op *opline = EX(opline);
- int ret = i_zend_is_true(_get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC));
+ zval *val = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
+ int ret;
+ if (IS_CV == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ ret = Z_LVAL_P(val);
+ } else {
+ ret = i_zend_is_true(val);
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
if (!ret) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
{
zend_op *opline = EX(opline);
- int ret = i_zend_is_true(_get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC));
+ zval *val = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
+ int ret;
+ if (IS_CV == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ ret = Z_LVAL_P(val);
+ } else {
+ ret = i_zend_is_true(val);
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
if (ret) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
{
zend_op *opline = EX(opline);
- int retval = i_zend_is_true(_get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC));
+ zval *val = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
+ int retval;
- if (UNEXPECTED(EG(exception) != NULL)) {
- ZEND_VM_CONTINUE();
- } else if (EXPECTED(retval != 0)) {
+ if (IS_CV == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ retval = Z_LVAL_P(val);
+ } else {
+ retval = i_zend_is_true(val);
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
+ if (EXPECTED(retval != 0)) {
#if DEBUG_ZEND>=2
printf("Conditional jmp on true to %d\n", opline->extended_value);
#endif
{
zend_op *opline = EX(opline);
- int retval = i_zend_is_true(_get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC));
+ zval *val = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
+ int retval;
+ if (IS_CV == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ retval = Z_LVAL_P(val);
+ } else {
+ retval = i_zend_is_true(val);
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
Z_LVAL(EX_T(opline->result.u.var).tmp_var) = retval;
Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
if (!retval) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
}
{
zend_op *opline = EX(opline);
- int retval = i_zend_is_true(_get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC));
+ zval *val = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
+ int retval;
+ if (IS_CV == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
+ retval = Z_LVAL_P(val);
+ } else {
+ retval = i_zend_is_true(val);
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ ZEND_VM_CONTINUE();
+ }
+ }
Z_LVAL(EX_T(opline->result.u.var).tmp_var) = retval;
Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
if (retval) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_JMP(opline->op2.u.jmp_addr);
+ ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
+ ZEND_VM_CONTINUE();
}
ZEND_VM_NEXT_OPCODE();
}