117 }
while (i < func->op_array.
num_args);
132 zend_delete_call_instructions(op_array, opline-1);
159 if (op_array->
last < 2) {
163 checkpoint = zend_arena_checkpoint(ctx->
arena);
165 while (opline <
end) {
229 zend_try_inline_call(op_array, fcall, opline, call_stack[
call].
func);
241 if (call_stack[
call - 1].func_arg_num != (uint32_t)-1
242 && has_known_send_mode(&call_stack[
call - 1], call_stack[
call - 1].func_arg_num)) {
267 opline->opcode -= 12;
280 if (has_known_send_mode(&call_stack[
call - 1], opline->op2.num)) {
293 if (has_known_send_mode(&call_stack[
call - 1], opline->op2.num)) {
300 if (call_stack[
call - 1].last_check_func_arg_opline ==
NULL) {
306 MAKE_NOP(call_stack[
call - 1].last_check_func_arg_opline);
315 if (has_known_send_mode(&call_stack[
call - 1], opline->op2.num)) {
330 if (has_known_send_mode(&call_stack[
call - 1], opline->op2.num)) {
359 zend_arena_release(&ctx->
arena, checkpoint);
struct _optimizer_call_info optimizer_call_info
void zend_optimize_func_calls(zend_op_array *op_array, zend_optimizer_ctx *ctx)
unsigned const char * end
zend_op * last_check_func_arg_opline
zend_long optimization_level
struct _zend_function::@236135173067030250234125302313220025134003177336 common
#define RETURN_VALUE_USED(opline)
#define CRT_CONSTANT_EX(op_array, opline, node)
ZEND_API uint8_t zend_get_call_op(const zend_op *init_op, zend_function *fbc)
#define ARG_MUST_BE_SENT_BY_REF(zf, arg_num)
#define ZEND_ACC_HAS_TYPE_HINTS
#define ZEND_ACC_ABSTRACT
#define ZEND_ACC_TRAIT_CLONE
#define ZEND_ARG_SEND_MODE(arg_info)
#define ZEND_USER_FUNCTION
struct _zend_op_array zend_op_array
#define ZEND_ACC_VARIADIC
#define ARG_SHOULD_BE_SENT_BY_REF(zf, arg_num)
#define ZEND_ACC_DEPRECATED
#define ARG_MAY_BE_SENT_BY_REF(zf, arg_num)
union _zend_function zend_function
int zend_optimizer_add_literal(zend_op_array *op_array, const zval *zv)
void zend_optimizer_convert_to_free_op1(zend_op_array *op_array, zend_op *opline)
zend_function * zend_optimizer_get_called_func(zend_script *script, zend_op_array *op_array, zend_op *opline, bool *is_prototype)
#define ZEND_OPTIMIZER_PASS_16
#define ZEND_OP2_LITERAL(opline)
struct _zend_optimizer_ctx zend_optimizer_ctx
#define ZEND_UNREACHABLE()
#define ZEND_INIT_USER_CALL
#define ZEND_CALLABLE_CONVERT
#define ZEND_FETCH_OBJ_FUNC_ARG
#define ZEND_FETCH_STATIC_PROP_R
#define ZEND_FETCH_DIM_FUNC_ARG
#define ZEND_CHECK_FUNC_ARG
#define ZEND_FETCH_STATIC_PROP_FUNC_ARG
#define ZEND_INIT_NS_FCALL_BY_NAME
#define ZEND_INIT_FCALL_BY_NAME
#define ZEND_SEND_VAR_NO_REF_EX
#define ZEND_SEND_FUNC_ARG
#define ZEND_INIT_DYNAMIC_CALL
#define ZEND_INIT_PARENT_PROPERTY_HOOK_CALL
#define ZEND_FETCH_STATIC_PROP_W
#define ZEND_SEND_VAR_NO_REF
#define ZEND_DO_FCALL_BY_NAME
#define ZEND_INIT_METHOD_CALL
#define ZEND_INIT_STATIC_METHOD_CALL
#define ZEND_FETCH_FUNC_ARG