{
USE_OPLINE
-#if DEBUG_ZEND>=2
- printf("Jumping to %d\n", opline->op1.opline_num);
-#endif
ZEND_VM_SET_OPCODE(opline->op1.jmp_addr);
ZEND_VM_CONTINUE();
}
USE_OPLINE
zend_free_op free_op1;
zval *val;
- int ret;
SAVE_OPLINE();
val = GET_OP1_ZVAL_PTR_DEREF(BP_VAR_R);
- if (OP1_TYPE == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- ret = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- ret = i_zend_is_true(val TSRMLS_CC);
- FREE_OP1();
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (OP1_TYPE == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
}
}
- if (!ret) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
- }
- ZEND_VM_NEXT_OPCODE();
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ opline++;
+ } else {
+ opline = opline->op2.jmp_addr;
+ }
+ FREE_OP1();
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
ZEND_VM_HANDLER(44, ZEND_JMPNZ, CONST|TMP|VAR|CV, ANY)
USE_OPLINE
zend_free_op free_op1;
zval *val;
- int ret;
SAVE_OPLINE();
val = GET_OP1_ZVAL_PTR_DEREF(BP_VAR_R);
- if (OP1_TYPE == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- ret = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- ret = i_zend_is_true(val TSRMLS_CC);
- FREE_OP1();
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (OP1_TYPE == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
}
}
- if (ret) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
- }
- ZEND_VM_NEXT_OPCODE();
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ opline = opline->op2.jmp_addr;
+ } else {
+ opline++;
+ }
+ FREE_OP1();
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
ZEND_VM_HANDLER(45, ZEND_JMPZNZ, CONST|TMP|VAR|CV, ANY)
USE_OPLINE
zend_free_op free_op1;
zval *val;
- int retval;
SAVE_OPLINE();
val = GET_OP1_ZVAL_PTR_DEREF(BP_VAR_R);
- if (OP1_TYPE == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- retval = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- retval = i_zend_is_true(val TSRMLS_CC);
- FREE_OP1();
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (OP1_TYPE == IS_TMP_VAR) {
+ if (EXPECTED(Z_TYPE_P(val) == IS_TRUE)) {
+ ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
}
}
- if (EXPECTED(retval != 0)) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp on true to %d\n", opline->extended_value);
-#endif
- ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ opline = (zend_op*)(((char*)opline) + opline->extended_value);
} else {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp on false to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ opline = opline->op2.jmp_addr;
}
+ FREE_OP1();
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
ZEND_VM_HANDLER(46, ZEND_JMPZ_EX, CONST|TMP|VAR|CV, ANY)
USE_OPLINE
zend_free_op free_op1;
zval *val;
- int retval;
SAVE_OPLINE();
val = GET_OP1_ZVAL_PTR_DEREF(BP_VAR_R);
- if (OP1_TYPE == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- retval = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- retval = i_zend_is_true(val TSRMLS_CC);
- FREE_OP1();
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (OP1_TYPE == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
}
}
- ZVAL_BOOL(EX_VAR(opline->result.var), retval);
- if (!retval) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
+
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ opline++;
+ } else {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ opline = opline->op2.jmp_addr;
}
- ZEND_VM_NEXT_OPCODE();
+ FREE_OP1();
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
ZEND_VM_HANDLER(47, ZEND_JMPNZ_EX, CONST|TMP|VAR|CV, ANY)
USE_OPLINE
zend_free_op free_op1;
zval *val;
- int retval;
SAVE_OPLINE();
val = GET_OP1_ZVAL_PTR_DEREF(BP_VAR_R);
- if (OP1_TYPE == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- retval = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- retval = i_zend_is_true(val TSRMLS_CC);
- FREE_OP1();
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (OP1_TYPE == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
}
}
- ZVAL_BOOL(EX_VAR(opline->result.var), retval);
- if (retval) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ opline = opline->op2.jmp_addr;
+ } else {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ opline++;
}
- ZEND_VM_NEXT_OPCODE();
+ FREE_OP1();
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
ZEND_VM_HANDLER(70, ZEND_FREE, TMP|VAR, ANY)
zval_opt_copy_ctor(EX_VAR(opline->result.var));
}
FREE_OP1_IF_VAR();
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
ZEND_VM_JMP(opline->op2.jmp_addr);
}
}
}
FREE_OP1_IF_VAR();
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
ZEND_VM_JMP(opline->op2.jmp_addr);
}
{
USE_OPLINE
-#if DEBUG_ZEND>=2
- printf("Jumping to %d\n", opline->op1.opline_num);
-#endif
ZEND_VM_SET_OPCODE(opline->op1.jmp_addr);
ZEND_VM_CONTINUE();
}
USE_OPLINE
zval *val;
- int ret;
SAVE_OPLINE();
val = opline->op1.zv;
- if (IS_CONST == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- ret = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- ret = i_zend_is_true(val TSRMLS_CC);
-
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_CONST == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
}
}
- if (!ret) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
+
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ opline++;
+ } else {
+ opline = opline->op2.jmp_addr;
}
- ZEND_VM_NEXT_OPCODE();
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_JMPNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
USE_OPLINE
zval *val;
- int ret;
SAVE_OPLINE();
val = opline->op1.zv;
- if (IS_CONST == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- ret = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- ret = i_zend_is_true(val TSRMLS_CC);
-
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_CONST == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
}
}
- if (ret) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
+
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ opline = opline->op2.jmp_addr;
+ } else {
+ opline++;
}
- ZEND_VM_NEXT_OPCODE();
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_JMPZNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
USE_OPLINE
zval *val;
- int retval;
SAVE_OPLINE();
val = opline->op1.zv;
- if (IS_CONST == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- retval = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- retval = i_zend_is_true(val TSRMLS_CC);
-
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_CONST == IS_TMP_VAR) {
+ if (EXPECTED(Z_TYPE_P(val) == IS_TRUE)) {
+ ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
}
}
- if (EXPECTED(retval != 0)) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp on true to %d\n", opline->extended_value);
-#endif
- ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ opline = (zend_op*)(((char*)opline) + opline->extended_value);
} else {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp on false to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ opline = opline->op2.jmp_addr;
+ }
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
}
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
USE_OPLINE
zval *val;
- int retval;
SAVE_OPLINE();
val = opline->op1.zv;
- if (IS_CONST == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- retval = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- retval = i_zend_is_true(val TSRMLS_CC);
-
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_CONST == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
}
}
- ZVAL_BOOL(EX_VAR(opline->result.var), retval);
- if (!retval) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
+
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ opline++;
+ } else {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ opline = opline->op2.jmp_addr;
}
- ZEND_VM_NEXT_OPCODE();
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_JMPNZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
USE_OPLINE
zval *val;
- int retval;
SAVE_OPLINE();
val = opline->op1.zv;
- if (IS_CONST == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- retval = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- retval = i_zend_is_true(val TSRMLS_CC);
-
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_CONST == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
}
}
- ZVAL_BOOL(EX_VAR(opline->result.var), retval);
- if (retval) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ opline = opline->op2.jmp_addr;
+ } else {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ opline++;
}
- ZEND_VM_NEXT_OPCODE();
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_DO_FCALL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
zval_opt_copy_ctor(EX_VAR(opline->result.var));
}
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
ZEND_VM_JMP(opline->op2.jmp_addr);
}
}
}
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
ZEND_VM_JMP(opline->op2.jmp_addr);
}
USE_OPLINE
zend_free_op free_op1;
zval *val;
- int ret;
SAVE_OPLINE();
val = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- if (IS_TMP_VAR == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- ret = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- ret = i_zend_is_true(val TSRMLS_CC);
- zval_dtor(free_op1.var);
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_TMP_VAR == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
}
}
- if (!ret) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
- }
- ZEND_VM_NEXT_OPCODE();
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ opline++;
+ } else {
+ opline = opline->op2.jmp_addr;
+ }
+ zval_dtor(free_op1.var);
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_JMPNZ_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
USE_OPLINE
zend_free_op free_op1;
zval *val;
- int ret;
SAVE_OPLINE();
val = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- if (IS_TMP_VAR == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- ret = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- ret = i_zend_is_true(val TSRMLS_CC);
- zval_dtor(free_op1.var);
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_TMP_VAR == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
}
}
- if (ret) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
- }
- ZEND_VM_NEXT_OPCODE();
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ opline = opline->op2.jmp_addr;
+ } else {
+ opline++;
+ }
+ zval_dtor(free_op1.var);
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_JMPZNZ_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
USE_OPLINE
zend_free_op free_op1;
zval *val;
- int retval;
SAVE_OPLINE();
val = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- if (IS_TMP_VAR == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- retval = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- retval = i_zend_is_true(val TSRMLS_CC);
- zval_dtor(free_op1.var);
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_TMP_VAR == IS_TMP_VAR) {
+ if (EXPECTED(Z_TYPE_P(val) == IS_TRUE)) {
+ ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
}
}
- if (EXPECTED(retval != 0)) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp on true to %d\n", opline->extended_value);
-#endif
- ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ opline = (zend_op*)(((char*)opline) + opline->extended_value);
} else {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp on false to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ opline = opline->op2.jmp_addr;
+ }
+ zval_dtor(free_op1.var);
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
}
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
USE_OPLINE
zend_free_op free_op1;
zval *val;
- int retval;
SAVE_OPLINE();
val = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- if (IS_TMP_VAR == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- retval = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- retval = i_zend_is_true(val TSRMLS_CC);
- zval_dtor(free_op1.var);
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_TMP_VAR == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
}
}
- ZVAL_BOOL(EX_VAR(opline->result.var), retval);
- if (!retval) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
+
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ opline++;
+ } else {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ opline = opline->op2.jmp_addr;
}
- ZEND_VM_NEXT_OPCODE();
+ zval_dtor(free_op1.var);
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_JMPNZ_EX_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
USE_OPLINE
zend_free_op free_op1;
zval *val;
- int retval;
SAVE_OPLINE();
val = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- if (IS_TMP_VAR == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- retval = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- retval = i_zend_is_true(val TSRMLS_CC);
- zval_dtor(free_op1.var);
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_TMP_VAR == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
}
}
- ZVAL_BOOL(EX_VAR(opline->result.var), retval);
- if (retval) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ opline = opline->op2.jmp_addr;
+ } else {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ opline++;
}
- ZEND_VM_NEXT_OPCODE();
+ zval_dtor(free_op1.var);
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_FREE_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
zval_opt_copy_ctor(EX_VAR(opline->result.var));
}
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
ZEND_VM_JMP(opline->op2.jmp_addr);
}
}
}
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
ZEND_VM_JMP(opline->op2.jmp_addr);
}
USE_OPLINE
zend_free_op free_op1;
zval *val;
- int ret;
SAVE_OPLINE();
val = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- if (IS_VAR == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- ret = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- ret = i_zend_is_true(val TSRMLS_CC);
- zval_ptr_dtor_nogc(free_op1.var);
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_VAR == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
}
}
- if (!ret) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
- }
- ZEND_VM_NEXT_OPCODE();
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ opline++;
+ } else {
+ opline = opline->op2.jmp_addr;
+ }
+ zval_ptr_dtor_nogc(free_op1.var);
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_JMPNZ_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
USE_OPLINE
zend_free_op free_op1;
zval *val;
- int ret;
SAVE_OPLINE();
val = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- if (IS_VAR == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- ret = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- ret = i_zend_is_true(val TSRMLS_CC);
- zval_ptr_dtor_nogc(free_op1.var);
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_VAR == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
}
}
- if (ret) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
- }
- ZEND_VM_NEXT_OPCODE();
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ opline = opline->op2.jmp_addr;
+ } else {
+ opline++;
+ }
+ zval_ptr_dtor_nogc(free_op1.var);
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_JMPZNZ_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
USE_OPLINE
zend_free_op free_op1;
zval *val;
- int retval;
SAVE_OPLINE();
val = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- if (IS_VAR == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- retval = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- retval = i_zend_is_true(val TSRMLS_CC);
- zval_ptr_dtor_nogc(free_op1.var);
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_VAR == IS_TMP_VAR) {
+ if (EXPECTED(Z_TYPE_P(val) == IS_TRUE)) {
+ ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
}
}
- if (EXPECTED(retval != 0)) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp on true to %d\n", opline->extended_value);
-#endif
- ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ opline = (zend_op*)(((char*)opline) + opline->extended_value);
} else {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp on false to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ opline = opline->op2.jmp_addr;
+ }
+ zval_ptr_dtor_nogc(free_op1.var);
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
}
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
USE_OPLINE
zend_free_op free_op1;
zval *val;
- int retval;
SAVE_OPLINE();
val = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- if (IS_VAR == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- retval = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- retval = i_zend_is_true(val TSRMLS_CC);
- zval_ptr_dtor_nogc(free_op1.var);
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_VAR == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
}
}
- ZVAL_BOOL(EX_VAR(opline->result.var), retval);
- if (!retval) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
+
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ opline++;
+ } else {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ opline = opline->op2.jmp_addr;
}
- ZEND_VM_NEXT_OPCODE();
+ zval_ptr_dtor_nogc(free_op1.var);
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_JMPNZ_EX_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
USE_OPLINE
zend_free_op free_op1;
zval *val;
- int retval;
SAVE_OPLINE();
val = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
- if (IS_VAR == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- retval = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- retval = i_zend_is_true(val TSRMLS_CC);
- zval_ptr_dtor_nogc(free_op1.var);
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_VAR == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
}
}
- ZVAL_BOOL(EX_VAR(opline->result.var), retval);
- if (retval) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ opline = opline->op2.jmp_addr;
+ } else {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ opline++;
}
- ZEND_VM_NEXT_OPCODE();
+ zval_ptr_dtor_nogc(free_op1.var);
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_FREE_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
zval_opt_copy_ctor(EX_VAR(opline->result.var));
}
zval_ptr_dtor_nogc(free_op1.var);
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
ZEND_VM_JMP(opline->op2.jmp_addr);
}
}
}
zval_ptr_dtor_nogc(free_op1.var);
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
ZEND_VM_JMP(opline->op2.jmp_addr);
}
USE_OPLINE
zval *val;
- int ret;
SAVE_OPLINE();
val = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
- if (IS_CV == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- ret = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- ret = i_zend_is_true(val TSRMLS_CC);
-
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_CV == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
}
}
- if (!ret) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
+
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ opline++;
+ } else {
+ opline = opline->op2.jmp_addr;
}
- ZEND_VM_NEXT_OPCODE();
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_JMPNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
USE_OPLINE
zval *val;
- int ret;
SAVE_OPLINE();
val = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
- if (IS_CV == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- ret = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- ret = i_zend_is_true(val TSRMLS_CC);
-
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_CV == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
}
}
- if (ret) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
+
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ opline = opline->op2.jmp_addr;
+ } else {
+ opline++;
}
- ZEND_VM_NEXT_OPCODE();
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_JMPZNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
USE_OPLINE
zval *val;
- int retval;
SAVE_OPLINE();
val = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
- if (IS_CV == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- retval = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- retval = i_zend_is_true(val TSRMLS_CC);
-
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_CV == IS_TMP_VAR) {
+ if (EXPECTED(Z_TYPE_P(val) == IS_TRUE)) {
+ ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
}
}
- if (EXPECTED(retval != 0)) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp on true to %d\n", opline->extended_value);
-#endif
- ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ opline = (zend_op*)(((char*)opline) + opline->extended_value);
} else {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp on false to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ opline = opline->op2.jmp_addr;
}
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
USE_OPLINE
zval *val;
- int retval;
SAVE_OPLINE();
val = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
- if (IS_CV == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- retval = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- retval = i_zend_is_true(val TSRMLS_CC);
-
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_CV == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
}
}
- ZVAL_BOOL(EX_VAR(opline->result.var), retval);
- if (!retval) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
+
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ opline++;
+ } else {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ opline = opline->op2.jmp_addr;
}
- ZEND_VM_NEXT_OPCODE();
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_JMPNZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
USE_OPLINE
zval *val;
- int retval;
SAVE_OPLINE();
val = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
- if (IS_CV == IS_TMP_VAR && EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
- retval = (Z_TYPE_P(val) == IS_TRUE);
- } else {
- retval = i_zend_is_true(val TSRMLS_CC);
-
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
+ if (IS_CV == IS_TMP_VAR) {
+ if (Z_TYPE_P(val) == IS_TRUE) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
+ ZEND_VM_CONTINUE();
+ } else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ ZEND_VM_SET_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
}
}
- ZVAL_BOOL(EX_VAR(opline->result.var), retval);
- if (retval) {
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr);
- ZEND_VM_CONTINUE();
+ if (i_zend_is_true(val TSRMLS_CC)) {
+ ZVAL_TRUE(EX_VAR(opline->result.var));
+ opline = opline->op2.jmp_addr;
+ } else {
+ ZVAL_FALSE(EX_VAR(opline->result.var));
+ opline++;
}
- ZEND_VM_NEXT_OPCODE();
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
+ HANDLE_EXCEPTION();
+ }
+ ZEND_VM_JMP(opline);
}
static int ZEND_FASTCALL ZEND_RETURN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
zval_opt_copy_ctor(EX_VAR(opline->result.var));
}
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
ZEND_VM_JMP(opline->op2.jmp_addr);
}
}
}
-#if DEBUG_ZEND>=2
- printf("Conditional jmp to %d\n", opline->op2.opline_num);
-#endif
ZEND_VM_JMP(opline->op2.jmp_addr);
}