#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
#if DEBUG_ZEND>=2
printf("Conditional jmp on true to %d\n", opline->extended_value);
#endif
- ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->extended_value]);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ ZEND_VM_JMP(&EX(op_array)->opcodes[opline->extended_value]);
} else {
#if DEBUG_ZEND>=2
printf("Conditional jmp on false to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
}
}
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
}
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
}
{
zend_op *opline = EX(opline);
zend_free_op free_op2;
+ zend_brk_cont_element *el;
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
- zend_brk_cont(GET_OP2_ZVAL_PTR(BP_VAR_R),
- opline->op1.u.opline_num,
- EX(op_array), EX(Ts) TSRMLS_CC)->brk);
+ el = zend_brk_cont(GET_OP2_ZVAL_PTR(BP_VAR_R), opline->op1.u.opline_num,
+ EX(op_array), EX(Ts) TSRMLS_CC);
FREE_OP2();
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ ZEND_VM_JMP(EX(op_array)->opcodes + el->brk);
}
ZEND_VM_HANDLER(51, ZEND_CONT, ANY, CONST|TMP|VAR|CV)
{
zend_op *opline = EX(opline);
zend_free_op free_op2;
+ zend_brk_cont_element *el;
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
- zend_brk_cont(GET_OP2_ZVAL_PTR(BP_VAR_R),
- opline->op1.u.opline_num,
- EX(op_array), EX(Ts) TSRMLS_CC)->cont);
+ el = zend_brk_cont(GET_OP2_ZVAL_PTR(BP_VAR_R), opline->op1.u.opline_num,
+ EX(op_array), EX(Ts) TSRMLS_CC);
FREE_OP2();
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ ZEND_VM_JMP(EX(op_array)->opcodes + el->cont);
}
ZEND_VM_HANDLER(48, ZEND_CASE, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
} else {
zval_ptr_dtor(&object_zval);
}
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes + opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes + opline->op2.u.opline_num);
} else {
SELECTIVE_PZVAL_LOCK(object_zval, &opline->result);
EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
} else if (Z_TYPE_PP(array_ptr_ptr) == IS_OBJECT) {
if(Z_OBJ_HT_PP(array_ptr_ptr)->get_class_entry == NULL) {
zend_error(E_WARNING, "foreach() can not iterate over objects without PHP class");
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
}
ce = Z_OBJCE_PP(array_ptr_ptr);
FREE_OP1_IF_VAR();
}
if (is_empty) {
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
} else {
ZEND_VM_NEXT_OPCODE();
}
default:
case ZEND_ITER_INVALID:
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
case ZEND_ITER_PLAIN_OBJECT: {
char *class_name, *prop_name;
do {
if (zend_hash_get_current_data(fe_ht, (void **) &value)==FAILURE) {
/* reached end of iteration */
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
}
key_type = zend_hash_get_current_key_ex(fe_ht, &str_key, &str_key_len, &int_key, 0, NULL);
fe_ht = HASH_OF(array);
if (zend_hash_get_current_data(fe_ht, (void **) &value)==FAILURE) {
/* reached end of iteration */
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
}
if (use_key) {
key_type = zend_hash_get_current_key_ex(fe_ht, &str_key, &str_key_len, &int_key, 1, NULL);
zval_ptr_dtor(&array);
ZEND_VM_NEXT_OPCODE();
}
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
}
iter->funcs->get_current_data(iter, &value TSRMLS_CC);
if (EG(exception)) {
}
if (!value) {
/* failure in get_current_data */
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
}
if (use_key) {
if (iter->funcs->get_current_key) {
} else {
zval_ptr_dtor(&object_zval);
}
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes + opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes + opline->op2.u.opline_num);
} else {
SELECTIVE_PZVAL_LOCK(object_zval, &opline->result);
EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
{
zend_op *opline = EX(opline);
+ zend_brk_cont_element *el;
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
- zend_brk_cont(&opline->op2.u.constant,
- opline->op1.u.opline_num,
- EX(op_array), EX(Ts) TSRMLS_CC)->brk);
+ el = zend_brk_cont(&opline->op2.u.constant, opline->op1.u.opline_num,
+ EX(op_array), EX(Ts) TSRMLS_CC);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ ZEND_VM_JMP(EX(op_array)->opcodes + el->brk);
}
static int ZEND_CONT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
zend_op *opline = EX(opline);
+ zend_brk_cont_element *el;
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
- zend_brk_cont(&opline->op2.u.constant,
- opline->op1.u.opline_num,
- EX(op_array), EX(Ts) TSRMLS_CC)->cont);
+ el = zend_brk_cont(&opline->op2.u.constant, opline->op1.u.opline_num,
+ EX(op_array), EX(Ts) TSRMLS_CC);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ ZEND_VM_JMP(EX(op_array)->opcodes + el->cont);
}
static int ZEND_FETCH_CLASS_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
zend_op *opline = EX(opline);
zend_free_op free_op2;
+ zend_brk_cont_element *el;
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
- zend_brk_cont(_get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC),
- opline->op1.u.opline_num,
- EX(op_array), EX(Ts) TSRMLS_CC)->brk);
+ el = zend_brk_cont(_get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC), opline->op1.u.opline_num,
+ EX(op_array), EX(Ts) TSRMLS_CC);
zval_dtor(free_op2.var);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ ZEND_VM_JMP(EX(op_array)->opcodes + el->brk);
}
static int ZEND_CONT_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
zend_op *opline = EX(opline);
zend_free_op free_op2;
+ zend_brk_cont_element *el;
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
- zend_brk_cont(_get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC),
- opline->op1.u.opline_num,
- EX(op_array), EX(Ts) TSRMLS_CC)->cont);
+ el = zend_brk_cont(_get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC), opline->op1.u.opline_num,
+ EX(op_array), EX(Ts) TSRMLS_CC);
zval_dtor(free_op2.var);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ ZEND_VM_JMP(EX(op_array)->opcodes + el->cont);
}
static int ZEND_FETCH_CLASS_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
zend_op *opline = EX(opline);
zend_free_op free_op2;
+ zend_brk_cont_element *el;
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
- zend_brk_cont(_get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC),
- opline->op1.u.opline_num,
- EX(op_array), EX(Ts) TSRMLS_CC)->brk);
+ el = zend_brk_cont(_get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC), opline->op1.u.opline_num,
+ EX(op_array), EX(Ts) TSRMLS_CC);
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ ZEND_VM_JMP(EX(op_array)->opcodes + el->brk);
}
static int ZEND_CONT_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
zend_op *opline = EX(opline);
zend_free_op free_op2;
+ zend_brk_cont_element *el;
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
- zend_brk_cont(_get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC),
- opline->op1.u.opline_num,
- EX(op_array), EX(Ts) TSRMLS_CC)->cont);
+ el = zend_brk_cont(_get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC), opline->op1.u.opline_num,
+ EX(op_array), EX(Ts) TSRMLS_CC);
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ ZEND_VM_JMP(EX(op_array)->opcodes + el->cont);
}
static int ZEND_FETCH_CLASS_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
zend_op *opline = EX(opline);
+ zend_brk_cont_element *el;
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
- zend_brk_cont(_get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC),
- opline->op1.u.opline_num,
- EX(op_array), EX(Ts) TSRMLS_CC)->brk);
+ el = zend_brk_cont(_get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC), opline->op1.u.opline_num,
+ EX(op_array), EX(Ts) TSRMLS_CC);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ ZEND_VM_JMP(EX(op_array)->opcodes + el->brk);
}
static int ZEND_CONT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
zend_op *opline = EX(opline);
+ zend_brk_cont_element *el;
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes +
- zend_brk_cont(_get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC),
- opline->op1.u.opline_num,
- EX(op_array), EX(Ts) TSRMLS_CC)->cont);
+ el = zend_brk_cont(_get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC), opline->op1.u.opline_num,
+ EX(op_array), EX(Ts) TSRMLS_CC);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ ZEND_VM_JMP(EX(op_array)->opcodes + el->cont);
}
static int ZEND_BW_NOT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
#if DEBUG_ZEND>=2
printf("Conditional jmp on true to %d\n", opline->extended_value);
#endif
- ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->extended_value]);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ ZEND_VM_JMP(&EX(op_array)->opcodes[opline->extended_value]);
} else {
#if DEBUG_ZEND>=2
printf("Conditional jmp on false to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
}
}
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
}
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
}
} else if (Z_TYPE_PP(array_ptr_ptr) == IS_OBJECT) {
if(Z_OBJ_HT_PP(array_ptr_ptr)->get_class_entry == NULL) {
zend_error(E_WARNING, "foreach() can not iterate over objects without PHP class");
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
}
ce = Z_OBJCE_PP(array_ptr_ptr);
}
if (is_empty) {
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
} else {
ZEND_VM_NEXT_OPCODE();
}
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
#if DEBUG_ZEND>=2
printf("Conditional jmp on true to %d\n", opline->extended_value);
#endif
- ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->extended_value]);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ ZEND_VM_JMP(&EX(op_array)->opcodes[opline->extended_value]);
} else {
#if DEBUG_ZEND>=2
printf("Conditional jmp on false to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
}
}
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
}
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
}
} else if (Z_TYPE_PP(array_ptr_ptr) == IS_OBJECT) {
if(Z_OBJ_HT_PP(array_ptr_ptr)->get_class_entry == NULL) {
zend_error(E_WARNING, "foreach() can not iterate over objects without PHP class");
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
}
ce = Z_OBJCE_PP(array_ptr_ptr);
}
if (is_empty) {
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
} else {
ZEND_VM_NEXT_OPCODE();
}
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
#if DEBUG_ZEND>=2
printf("Conditional jmp on true to %d\n", opline->extended_value);
#endif
- ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->extended_value]);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ ZEND_VM_JMP(&EX(op_array)->opcodes[opline->extended_value]);
} else {
#if DEBUG_ZEND>=2
printf("Conditional jmp on false to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
}
}
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
}
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
}
} else if (Z_TYPE_PP(array_ptr_ptr) == IS_OBJECT) {
if(Z_OBJ_HT_PP(array_ptr_ptr)->get_class_entry == NULL) {
zend_error(E_WARNING, "foreach() can not iterate over objects without PHP class");
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
}
ce = Z_OBJCE_PP(array_ptr_ptr);
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
}
if (is_empty) {
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
} else {
ZEND_VM_NEXT_OPCODE();
}
default:
case ZEND_ITER_INVALID:
zend_error(E_WARNING, "Invalid argument supplied for foreach()");
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
case ZEND_ITER_PLAIN_OBJECT: {
char *class_name, *prop_name;
do {
if (zend_hash_get_current_data(fe_ht, (void **) &value)==FAILURE) {
/* reached end of iteration */
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
}
key_type = zend_hash_get_current_key_ex(fe_ht, &str_key, &str_key_len, &int_key, 0, NULL);
fe_ht = HASH_OF(array);
if (zend_hash_get_current_data(fe_ht, (void **) &value)==FAILURE) {
/* reached end of iteration */
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
}
if (use_key) {
key_type = zend_hash_get_current_key_ex(fe_ht, &str_key, &str_key_len, &int_key, 1, NULL);
zval_ptr_dtor(&array);
ZEND_VM_NEXT_OPCODE();
}
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
}
iter->funcs->get_current_data(iter, &value TSRMLS_CC);
if (EG(exception)) {
}
if (!value) {
/* failure in get_current_data */
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
}
if (use_key) {
if (iter->funcs->get_current_key) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
#if DEBUG_ZEND>=2
printf("Conditional jmp on true to %d\n", opline->extended_value);
#endif
- ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->extended_value]);
- ZEND_VM_CONTINUE(); /* CHECK_ME */
+ ZEND_VM_JMP(&EX(op_array)->opcodes[opline->extended_value]);
} else {
#if DEBUG_ZEND>=2
printf("Conditional jmp on false to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
}
}
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
}
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
#endif
- ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(opline->op2.u.jmp_addr);
}
ZEND_VM_NEXT_OPCODE();
}
} else if (Z_TYPE_PP(array_ptr_ptr) == IS_OBJECT) {
if(Z_OBJ_HT_PP(array_ptr_ptr)->get_class_entry == NULL) {
zend_error(E_WARNING, "foreach() can not iterate over objects without PHP class");
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
}
ce = Z_OBJCE_PP(array_ptr_ptr);
}
if (is_empty) {
- ZEND_VM_SET_OPCODE(EX(op_array)->opcodes+opline->op2.u.opline_num);
- ZEND_VM_CONTINUE_JMP();
+ ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
} else {
ZEND_VM_NEXT_OPCODE();
}