|
|
|
@ -537,7 +537,7 @@ static int ZEND_FASTCALL ZEND_DO_FCALL_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
uint32_t i; |
|
|
|
zval *p = ZEND_CALL_ARG(call, 1); |
|
|
|
|
|
|
|
for (i = 0; i < call->num_args; ++i) { |
|
|
|
for (i = 0; i < ZEND_CALL_NUM_ARGS(call); ++i) { |
|
|
|
zend_verify_arg_type(fbc, i + 1, p, NULL TSRMLS_CC); |
|
|
|
p++; |
|
|
|
} |
|
|
|
@ -692,7 +692,7 @@ static int ZEND_FASTCALL ZEND_SEND_UNPACK_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS |
|
|
|
SAVE_OPLINE(); |
|
|
|
|
|
|
|
args = get_zval_ptr(opline->op1_type, &opline->op1, execute_data, &free_op1, BP_VAR_R); |
|
|
|
arg_num = EX(call)->num_args + 1; |
|
|
|
arg_num = ZEND_CALL_NUM_ARGS(EX(call)) + 1; |
|
|
|
|
|
|
|
send_again: |
|
|
|
switch (Z_TYPE_P(args)) { |
|
|
|
@ -743,7 +743,7 @@ send_again: |
|
|
|
ZVAL_COPY(top, arg); |
|
|
|
} |
|
|
|
|
|
|
|
EX(call)->num_args++; |
|
|
|
ZEND_CALL_NUM_ARGS(EX(call))++; |
|
|
|
arg_num++; |
|
|
|
} ZEND_HASH_FOREACH_END(); |
|
|
|
|
|
|
|
@ -824,7 +824,7 @@ send_again: |
|
|
|
zend_vm_stack_extend_call_frame(&EX(call), arg_num - 1, 1 TSRMLS_CC); |
|
|
|
top = ZEND_CALL_ARG(EX(call), arg_num); |
|
|
|
ZVAL_COPY_VALUE(top, arg); |
|
|
|
EX(call)->num_args++; |
|
|
|
ZEND_CALL_NUM_ARGS(EX(call))++; |
|
|
|
|
|
|
|
iter->funcs->move_forward(iter TSRMLS_CC); |
|
|
|
if (UNEXPECTED(EG(exception) != NULL)) { |
|
|
|
@ -956,7 +956,7 @@ static int ZEND_FASTCALL ZEND_SEND_ARRAY_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
} else { |
|
|
|
ZVAL_COPY(param, arg); |
|
|
|
} |
|
|
|
EX(call)->num_args++; |
|
|
|
ZEND_CALL_NUM_ARGS(EX(call))++; |
|
|
|
arg_num++; |
|
|
|
param++; |
|
|
|
} ZEND_HASH_FOREACH_END(); |
|
|
|
@ -972,7 +972,7 @@ static int ZEND_FASTCALL ZEND_RECV_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
uint32_t arg_num = opline->op1.num; |
|
|
|
|
|
|
|
SAVE_OPLINE(); |
|
|
|
if (UNEXPECTED(arg_num > EX(num_args))) { |
|
|
|
if (UNEXPECTED(arg_num > EX_NUM_ARGS())) { |
|
|
|
zend_verify_missing_arg(execute_data, arg_num TSRMLS_CC); |
|
|
|
CHECK_EXCEPTION(); |
|
|
|
} else if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) { |
|
|
|
@ -989,7 +989,7 @@ static int ZEND_FASTCALL ZEND_RECV_VARIADIC_SPEC_HANDLER(ZEND_OPCODE_HANDLER_AR |
|
|
|
{ |
|
|
|
USE_OPLINE |
|
|
|
uint32_t arg_num = opline->op1.num; |
|
|
|
uint32_t arg_count = EX(num_args); |
|
|
|
uint32_t arg_count = EX_NUM_ARGS(); |
|
|
|
zval *params; |
|
|
|
|
|
|
|
SAVE_OPLINE(); |
|
|
|
@ -1664,7 +1664,7 @@ static int ZEND_FASTCALL ZEND_RECV_INIT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ |
|
|
|
|
|
|
|
SAVE_OPLINE(); |
|
|
|
param = _get_zval_ptr_cv_undef_BP_VAR_W(execute_data, opline->result.var TSRMLS_CC); |
|
|
|
if (arg_num > EX(num_args)) { |
|
|
|
if (arg_num > EX_NUM_ARGS()) { |
|
|
|
ZVAL_COPY_VALUE(param, opline->op2.zv); |
|
|
|
if (Z_OPT_CONSTANT_P(param)) { |
|
|
|
zval_update_constant(param, 0 TSRMLS_CC); |
|
|
|
@ -2688,7 +2688,7 @@ static int ZEND_FASTCALL ZEND_SEND_VAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A |
|
|
|
SAVE_OPLINE(); |
|
|
|
value = opline->op1.zv; |
|
|
|
arg = ZEND_CALL_ARG(EX(call), opline->op2.num); |
|
|
|
EX(call)->num_args = opline->op2.num; |
|
|
|
ZEND_CALL_NUM_ARGS(EX(call)) = opline->op2.num; |
|
|
|
ZVAL_COPY_VALUE(arg, value); |
|
|
|
if (IS_CONST == IS_CONST) { |
|
|
|
if (UNEXPECTED(Z_OPT_COPYABLE_P(arg))) { |
|
|
|
@ -2710,7 +2710,7 @@ static int ZEND_FASTCALL ZEND_SEND_VAL_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLE |
|
|
|
} |
|
|
|
value = opline->op1.zv; |
|
|
|
arg = ZEND_CALL_ARG(EX(call), opline->op2.num); |
|
|
|
EX(call)->num_args = opline->op2.num; |
|
|
|
ZEND_CALL_NUM_ARGS(EX(call)) = opline->op2.num; |
|
|
|
ZVAL_COPY_VALUE(arg, value); |
|
|
|
if (IS_CONST == IS_CONST) { |
|
|
|
if (UNEXPECTED(Z_OPT_COPYABLE_P(arg))) { |
|
|
|
@ -9719,7 +9719,7 @@ static int ZEND_FASTCALL ZEND_SEND_VAL_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG |
|
|
|
SAVE_OPLINE(); |
|
|
|
value = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1); |
|
|
|
arg = ZEND_CALL_ARG(EX(call), opline->op2.num); |
|
|
|
EX(call)->num_args = opline->op2.num; |
|
|
|
ZEND_CALL_NUM_ARGS(EX(call)) = opline->op2.num; |
|
|
|
ZVAL_COPY_VALUE(arg, value); |
|
|
|
if (IS_TMP_VAR == IS_CONST) { |
|
|
|
if (UNEXPECTED(Z_OPT_COPYABLE_P(arg))) { |
|
|
|
@ -9741,7 +9741,7 @@ static int ZEND_FASTCALL ZEND_SEND_VAL_EX_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ |
|
|
|
} |
|
|
|
value = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1); |
|
|
|
arg = ZEND_CALL_ARG(EX(call), opline->op2.num); |
|
|
|
EX(call)->num_args = opline->op2.num; |
|
|
|
ZEND_CALL_NUM_ARGS(EX(call)) = opline->op2.num; |
|
|
|
ZVAL_COPY_VALUE(arg, value); |
|
|
|
if (IS_TMP_VAR == IS_CONST) { |
|
|
|
if (UNEXPECTED(Z_OPT_COPYABLE_P(arg))) { |
|
|
|
@ -16482,7 +16482,7 @@ static int ZEND_FASTCALL ZEND_SEND_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG |
|
|
|
|
|
|
|
varptr = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1); |
|
|
|
arg = ZEND_CALL_ARG(EX(call), opline->op2.num); |
|
|
|
EX(call)->num_args = opline->op2.num; |
|
|
|
ZEND_CALL_NUM_ARGS(EX(call)) = opline->op2.num; |
|
|
|
if ((IS_VAR == IS_CV || IS_VAR == IS_VAR) && Z_ISREF_P(varptr)) { |
|
|
|
ZVAL_COPY(arg, Z_REFVAL_P(varptr)); |
|
|
|
zval_ptr_dtor_nogc(free_op1); |
|
|
|
@ -16527,7 +16527,7 @@ static int ZEND_FASTCALL ZEND_SEND_VAR_NO_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HAND |
|
|
|
} |
|
|
|
|
|
|
|
arg = ZEND_CALL_ARG(EX(call), opline->op2.num); |
|
|
|
EX(call)->num_args = opline->op2.num; |
|
|
|
ZEND_CALL_NUM_ARGS(EX(call)) = opline->op2.num; |
|
|
|
ZVAL_COPY_VALUE(arg, varptr); |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
@ -16548,7 +16548,7 @@ static int ZEND_FASTCALL ZEND_SEND_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG |
|
|
|
} |
|
|
|
|
|
|
|
arg = ZEND_CALL_ARG(EX(call), opline->op2.num); |
|
|
|
EX(call)->num_args = opline->op2.num; |
|
|
|
ZEND_CALL_NUM_ARGS(EX(call)) = opline->op2.num; |
|
|
|
if (IS_VAR == IS_VAR && UNEXPECTED(varptr == &EG(error_zval))) { |
|
|
|
ZVAL_NEW_REF(arg, &EG(uninitialized_zval)); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
@ -16581,7 +16581,7 @@ static int ZEND_FASTCALL ZEND_SEND_VAR_EX_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ |
|
|
|
} |
|
|
|
varptr = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1); |
|
|
|
arg = ZEND_CALL_ARG(EX(call), opline->op2.num); |
|
|
|
EX(call)->num_args = opline->op2.num; |
|
|
|
ZEND_CALL_NUM_ARGS(EX(call)) = opline->op2.num; |
|
|
|
if ((IS_VAR == IS_CV || IS_VAR == IS_VAR) && Z_ISREF_P(varptr)) { |
|
|
|
ZVAL_COPY(arg, Z_REFVAL_P(varptr)); |
|
|
|
zval_ptr_dtor_nogc(free_op1); |
|
|
|
@ -16666,7 +16666,7 @@ static int ZEND_FASTCALL ZEND_SEND_USER_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_AR |
|
|
|
ZVAL_COPY(param, arg); |
|
|
|
} |
|
|
|
|
|
|
|
EX(call)->num_args = opline->op2.num; |
|
|
|
ZEND_CALL_NUM_ARGS(EX(call)) = opline->op2.num; |
|
|
|
|
|
|
|
zval_ptr_dtor_nogc(free_op1); |
|
|
|
CHECK_EXCEPTION(); |
|
|
|
@ -34276,7 +34276,7 @@ static int ZEND_FASTCALL ZEND_SEND_VAR_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS |
|
|
|
|
|
|
|
varptr = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); |
|
|
|
arg = ZEND_CALL_ARG(EX(call), opline->op2.num); |
|
|
|
EX(call)->num_args = opline->op2.num; |
|
|
|
ZEND_CALL_NUM_ARGS(EX(call)) = opline->op2.num; |
|
|
|
if ((IS_CV == IS_CV || IS_CV == IS_VAR) && Z_ISREF_P(varptr)) { |
|
|
|
ZVAL_COPY(arg, Z_REFVAL_P(varptr)); |
|
|
|
|
|
|
|
@ -34321,7 +34321,7 @@ static int ZEND_FASTCALL ZEND_SEND_VAR_NO_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDL |
|
|
|
} |
|
|
|
|
|
|
|
arg = ZEND_CALL_ARG(EX(call), opline->op2.num); |
|
|
|
EX(call)->num_args = opline->op2.num; |
|
|
|
ZEND_CALL_NUM_ARGS(EX(call)) = opline->op2.num; |
|
|
|
ZVAL_COPY_VALUE(arg, varptr); |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
@ -34342,7 +34342,7 @@ static int ZEND_FASTCALL ZEND_SEND_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS |
|
|
|
} |
|
|
|
|
|
|
|
arg = ZEND_CALL_ARG(EX(call), opline->op2.num); |
|
|
|
EX(call)->num_args = opline->op2.num; |
|
|
|
ZEND_CALL_NUM_ARGS(EX(call)) = opline->op2.num; |
|
|
|
if (IS_CV == IS_VAR && UNEXPECTED(varptr == &EG(error_zval))) { |
|
|
|
ZVAL_NEW_REF(arg, &EG(uninitialized_zval)); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
@ -34374,7 +34374,7 @@ static int ZEND_FASTCALL ZEND_SEND_VAR_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_A |
|
|
|
} |
|
|
|
varptr = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); |
|
|
|
arg = ZEND_CALL_ARG(EX(call), opline->op2.num); |
|
|
|
EX(call)->num_args = opline->op2.num; |
|
|
|
ZEND_CALL_NUM_ARGS(EX(call)) = opline->op2.num; |
|
|
|
if ((IS_CV == IS_CV || IS_CV == IS_VAR) && Z_ISREF_P(varptr)) { |
|
|
|
ZVAL_COPY(arg, Z_REFVAL_P(varptr)); |
|
|
|
|
|
|
|
@ -34458,7 +34458,7 @@ static int ZEND_FASTCALL ZEND_SEND_USER_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARG |
|
|
|
ZVAL_COPY(param, arg); |
|
|
|
} |
|
|
|
|
|
|
|
EX(call)->num_args = opline->op2.num; |
|
|
|
ZEND_CALL_NUM_ARGS(EX(call)) = opline->op2.num; |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
|