}
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ SAVE_OPLINE();
+ zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
+ FREE_UNFETCHED_OP(opline->op2_type, opline->op2.var);
+ FREE_UNFETCHED_OP(opline->op1_type, opline->op1.var);
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DISCARD_EXCEPTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
-
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
- zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
- zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
-
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
-
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
-
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
- zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
- zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
-
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
-
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
-
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
- zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
} else if (IS_VAR == IS_VAR &&
opline->extended_value == ZEND_RETURNS_FUNCTION &&
UNEXPECTED(!Z_ISREF_P(value_ptr))) {
- zend_error(E_NOTICE, "Only variables should be assigned by reference");
- if (UNEXPECTED(EG(exception) != NULL)) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(variable_ptr, value_ptr, IS_VAR OPLINE_CC EXECUTE_DATA_CC))) {
if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
UNDEF_RESULT();
HANDLE_EXCEPTION();
}
- value_ptr = zend_assign_to_variable(variable_ptr, value_ptr, IS_VAR);
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value_ptr);
- }
- /* zend_assign_to_variable() always takes care of op2, never free it! */
-
} else {
if ((IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) ||
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
- zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
-
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
} else if (IS_CV == IS_VAR &&
opline->extended_value == ZEND_RETURNS_FUNCTION &&
UNEXPECTED(!Z_ISREF_P(value_ptr))) {
- zend_error(E_NOTICE, "Only variables should be assigned by reference");
- if (UNEXPECTED(EG(exception) != NULL)) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(variable_ptr, value_ptr, IS_CV OPLINE_CC EXECUTE_DATA_CC))) {
UNDEF_RESULT();
HANDLE_EXCEPTION();
}
- value_ptr = zend_assign_to_variable(variable_ptr, value_ptr, IS_CV);
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value_ptr);
- }
- /* zend_assign_to_variable() always takes care of op2, never free it! */
-
} else {
if ((IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) ||
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
-
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
-
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
- zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
- zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
-
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
-
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
-
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
- zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
} else if (IS_VAR == IS_VAR &&
opline->extended_value == ZEND_RETURNS_FUNCTION &&
UNEXPECTED(!Z_ISREF_P(value_ptr))) {
- zend_error(E_NOTICE, "Only variables should be assigned by reference");
- if (UNEXPECTED(EG(exception) != NULL)) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(variable_ptr, value_ptr, IS_VAR OPLINE_CC EXECUTE_DATA_CC))) {
if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
UNDEF_RESULT();
HANDLE_EXCEPTION();
}
- value_ptr = zend_assign_to_variable(variable_ptr, value_ptr, IS_VAR);
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value_ptr);
- }
- /* zend_assign_to_variable() always takes care of op2, never free it! */
-
} else {
if ((IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) ||
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
- zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
-
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */
} else if (IS_CV == IS_VAR &&
opline->extended_value == ZEND_RETURNS_FUNCTION &&
UNEXPECTED(!Z_ISREF_P(value_ptr))) {
- zend_error(E_NOTICE, "Only variables should be assigned by reference");
- if (UNEXPECTED(EG(exception) != NULL)) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(variable_ptr, value_ptr, IS_CV OPLINE_CC EXECUTE_DATA_CC))) {
UNDEF_RESULT();
HANDLE_EXCEPTION();
}
- value_ptr = zend_assign_to_variable(variable_ptr, value_ptr, IS_CV);
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value_ptr);
- }
- /* zend_assign_to_variable() always takes care of op2, never free it! */
-
} else {
if ((IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) ||
SAVE_OPLINE();
if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
- zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
-
-
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
/* Destroy the previously yielded value */