From 5a8cdb257dcb677841c7c05d85a499913d8cfd9f Mon Sep 17 00:00:00 2001 From: Arnaud Le Blanc Date: Tue, 26 Aug 2025 10:42:32 +0200 Subject: [PATCH] Experiment: Estimate opcode sizes --- Zend/Optimizer/block_pass.c | 20 +- Zend/Optimizer/dce.c | 3 +- Zend/Optimizer/dfa_pass.c | 22 +- Zend/Optimizer/pass1.c | 4 +- Zend/Optimizer/sccp.c | 8 +- Zend/zend_compile.c | 13 +- Zend/zend_compile.h | 2 +- Zend/zend_execute.c | 289 +++--- Zend/zend_vm_def.h | 131 +-- Zend/zend_vm_execute.h | 1962 ++++++++++++++++++----------------- Zend/zend_vm_gen.php | 260 ++++- Zend/zend_vm_opcodes.c | 220 ++++ Zend/zend_vm_opcodes.h | 11 + ext/opcache/zend_persist.c | 211 ++++ 14 files changed, 1880 insertions(+), 1276 deletions(-) diff --git a/Zend/Optimizer/block_pass.c b/Zend/Optimizer/block_pass.c index 275c519d431be..e8d8a2b1db41a 100644 --- a/Zend/Optimizer/block_pass.c +++ b/Zend/Optimizer/block_pass.c @@ -306,7 +306,7 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array if (src < op_array->opcodes + block->start) { break; } - src->result_type = IS_UNUSED; + SET_UNUSED(src->result); VAR_SOURCE(opline->op1) = NULL; MAKE_NOP(opline); ++(*opt_count); @@ -325,7 +325,7 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array src->opcode != ZEND_FETCH_OBJ_R && src->opcode != ZEND_NEW && src->opcode != ZEND_FETCH_THIS) { - src->result_type = IS_UNUSED; + SET_UNUSED(src->result); MAKE_NOP(opline); ++(*opt_count); if (src->opcode == ZEND_QM_ASSIGN) { @@ -413,8 +413,8 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array literal_dtor(&ZEND_OP1_LITERAL(opline)); literal_dtor(&ZEND_OP2_LITERAL(opline)); opline->opcode = ZEND_JMP; - opline->op1_type = IS_UNUSED; - opline->op2_type = IS_UNUSED; + SET_UNUSED(opline->op1); + SET_UNUSED(opline->op2); block->successors_count = 1; block->successors[0] = target; } @@ -538,7 +538,7 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array } } break; - + case ZEND_BOOL: case ZEND_BOOL_NOT: optimize_bool: @@ -829,7 +829,7 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array opline->opcode = ZEND_CAST; opline->extended_value = IS_STRING; COPY_NODE(opline->op1, opline->op2); - opline->op2_type = IS_UNUSED; + SET_UNUSED(opline->op2); opline->op2.var = 0; ++(*opt_count); } else if (opline->op2_type == IS_CONST && @@ -839,7 +839,7 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array literal_dtor(&ZEND_OP2_LITERAL(opline)); opline->opcode = ZEND_CAST; opline->extended_value = IS_STRING; - opline->op2_type = IS_UNUSED; + SET_UNUSED(opline->op2); opline->op2.var = 0; ++(*opt_count); } else if (opline->opcode == ZEND_CONCAT && @@ -902,6 +902,7 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array if (zend_optimizer_eval_unary_op(&result, opline->opcode, &ZEND_OP1_LITERAL(opline)) == SUCCESS) { literal_dtor(&ZEND_OP1_LITERAL(opline)); opline->opcode = ZEND_QM_ASSIGN; + SET_UNUSED(opline->op2); zend_optimizer_update_op1_const(op_array, opline, &result); ++(*opt_count); } @@ -916,6 +917,7 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array if (zend_optimizer_eval_cast(&result, opline->extended_value, &ZEND_OP1_LITERAL(opline)) == SUCCESS) { literal_dtor(&ZEND_OP1_LITERAL(opline)); opline->opcode = ZEND_QM_ASSIGN; + SET_UNUSED(opline->op2); opline->extended_value = 0; zend_optimizer_update_op1_const(op_array, opline, &result); ++(*opt_count); @@ -1614,7 +1616,7 @@ static void zend_t_usage(zend_cfg *cfg, zend_op_array *op_array, zend_bitset use case ZEND_DO_ICALL: case ZEND_DO_UCALL: case ZEND_DO_FCALL_BY_NAME: - opline->result_type = IS_UNUSED; + SET_UNUSED(opline->result); break; case ZEND_POST_INC: case ZEND_POST_DEC: @@ -1623,7 +1625,7 @@ static void zend_t_usage(zend_cfg *cfg, zend_op_array *op_array, zend_bitset use case ZEND_POST_INC_STATIC_PROP: case ZEND_POST_DEC_STATIC_PROP: opline->opcode -= 2; - opline->result_type = IS_UNUSED; + SET_UNUSED(opline->result); break; case ZEND_QM_ASSIGN: case ZEND_BOOL: diff --git a/Zend/Optimizer/dce.c b/Zend/Optimizer/dce.c index a00fd8bc6ad30..e4bf9ad6d5baf 100644 --- a/Zend/Optimizer/dce.c +++ b/Zend/Optimizer/dce.c @@ -377,8 +377,7 @@ static bool try_remove_var_def(context *ctx, int free_var, int use_chain, zend_o case ZEND_YIELD: case ZEND_YIELD_FROM: case ZEND_ASSERT_CHECK: - def_opline->result_type = IS_UNUSED; - def_opline->result.var = 0; + SET_UNUSED(def_opline->result); def_op->result_def = -1; var->definition = -1; return 1; diff --git a/Zend/Optimizer/dfa_pass.c b/Zend/Optimizer/dfa_pass.c index bf85764c93b49..b9817017ab965 100644 --- a/Zend/Optimizer/dfa_pass.c +++ b/Zend/Optimizer/dfa_pass.c @@ -801,7 +801,7 @@ static int zend_dfa_optimize_jmps(zend_op_array *op_array, zend_ssa *ssa) if (ssa->vars[ssa_op->result_def].use_chain < 0 && ssa->vars[ssa_op->result_def].phi_use_chain == NULL) { opline->opcode = ZEND_JMPZ; - opline->result_type = IS_UNUSED; + SET_UNUSED(opline->result); zend_ssa_remove_result_def(ssa, ssa_op); goto optimize_jmpz; } else if (opline->op1_type == IS_CONST) { @@ -815,7 +815,7 @@ static int zend_dfa_optimize_jmps(zend_op_array *op_array, zend_ssa *ssa) if (ssa->vars[ssa_op->result_def].use_chain < 0 && ssa->vars[ssa_op->result_def].phi_use_chain == NULL) { opline->opcode = ZEND_JMPNZ; - opline->result_type = IS_UNUSED; + SET_UNUSED(opline->result); zend_ssa_remove_result_def(ssa, ssa_op); goto optimize_jmpnz; } else if (opline->op1_type == IS_CONST) { @@ -829,7 +829,7 @@ static int zend_dfa_optimize_jmps(zend_op_array *op_array, zend_ssa *ssa) if (ssa->vars[ssa_op->result_def].use_chain < 0 && ssa->vars[ssa_op->result_def].phi_use_chain == NULL) { opline->opcode = ZEND_JMPNZ; - opline->result_type = IS_UNUSED; + SET_UNUSED(opline->result); zend_ssa_remove_result_def(ssa, ssa_op); goto optimize_jmpnz; } else if (opline->op1_type == IS_CONST) { @@ -855,7 +855,7 @@ static int zend_dfa_optimize_jmps(zend_op_array *op_array, zend_ssa *ssa) goto optimize_nop; } else { opline->opcode = ZEND_JMP; - opline->result_type = IS_UNUSED; + SET_UNUSED(opline->result); zend_ssa_remove_result_def(ssa, ssa_op); COPY_NODE(opline->op1, opline->op2); take_successor_0(ssa, block_num, block); @@ -871,7 +871,7 @@ static int zend_dfa_optimize_jmps(zend_op_array *op_array, zend_ssa *ssa) && var->use_chain < 0 && var->phi_use_chain == NULL) { if (Z_TYPE_P(CT_CONSTANT_EX(op_array, opline->op1.constant)) == IS_NULL) { opline->opcode = ZEND_JMP; - opline->result_type = IS_UNUSED; + SET_UNUSED(opline->result); zend_ssa_remove_result_def(ssa, ssa_op); COPY_NODE(opline->op1, opline->op2); take_successor_0(ssa, block_num, block); @@ -1000,8 +1000,7 @@ static bool zend_dfa_try_to_replace_result(zend_op_array *op_array, zend_ssa *ss ssa->vars[result_var].use_chain = -1; ssa->ops[def].result_def = -1; - op_array->opcodes[def].result_type = IS_UNUSED; - op_array->opcodes[def].result.var = 0; + SET_UNUSED(op_array->opcodes[def].result); if (ssa->ops[use].op1_use == result_var) { ssa->ops[use].op1_use = cv_var; @@ -1167,8 +1166,7 @@ void zend_dfa_optimize_op_array(zend_op_array *op_array, zend_optimizer_ctx *ctx opline->opcode = ZEND_QM_ASSIGN; opline->op1_type = opline->op2_type; opline->op1.var = opline->op2.var; - opline->op2_type = IS_UNUSED; - opline->op2.num = 0; + SET_UNUSED(opline->op2); ssa->ops[op_1].op1_use = ssa->ops[op_1].op2_use; ssa->ops[op_1].op1_use_chain = ssa->ops[op_1].op2_use_chain; ssa->ops[op_1].op2_use = -1; @@ -1216,8 +1214,7 @@ void zend_dfa_optimize_op_array(zend_op_array *op_array, zend_optimizer_ctx *ctx // op_1: #v.? = ADD #?.? [double,long], 0 => #v.? = QM_ASSIGN #?.? opline->opcode = ZEND_QM_ASSIGN; - opline->op2_type = IS_UNUSED; - opline->op2.num = 0; + SET_UNUSED(opline->op2); } } else if (opline->opcode == ZEND_MUL && (OP1_INFO() & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_LONG|MAY_BE_DOUBLE))) == 0) { @@ -1587,8 +1584,7 @@ void zend_dfa_optimize_op_array(zend_op_array *op_array, zend_optimizer_ctx *ctx opline->result.var = opline->op1.var; opline->op1_type = opline->op2_type; opline->op1.var = opline->op2.var; - opline->op2_type = IS_UNUSED; - opline->op2.var = 0; + SET_UNUSED(opline->op2); opline->opcode = ZEND_QM_ASSIGN; } } diff --git a/Zend/Optimizer/pass1.c b/Zend/Optimizer/pass1.c index fe92db583fcd9..9006b00a5221f 100644 --- a/Zend/Optimizer/pass1.c +++ b/Zend/Optimizer/pass1.c @@ -236,7 +236,7 @@ void zend_optimizer_pass1(zend_op_array *op_array, zend_optimizer_ctx *ctx) opline->opcode = ZEND_DECLARE_CONST; opline->op1_type = IS_CONST; opline->op2_type = IS_CONST; - opline->result_type = IS_UNUSED; + SET_UNUSED(opline->result); opline->op1.constant = send1_opline->op1.constant; opline->op2.constant = send2_opline->op1.constant; opline->result.num = 0; @@ -321,7 +321,7 @@ void zend_optimizer_pass1(zend_op_array *op_array, zend_optimizer_ctx *ctx) should_jmp = !should_jmp; } literal_dtor(&ZEND_OP1_LITERAL(opline)); - opline->op1_type = IS_UNUSED; + SET_UNUSED(opline->op1); if (should_jmp) { opline->opcode = ZEND_JMP; COPY_NODE(opline->op1, opline->op2); diff --git a/Zend/Optimizer/sccp.c b/Zend/Optimizer/sccp.c index c86672a8dd248..2b0756f755a0d 100644 --- a/Zend/Optimizer/sccp.c +++ b/Zend/Optimizer/sccp.c @@ -2134,7 +2134,7 @@ static int try_remove_definition(sccp_ctx *ctx, int var_num, zend_ssa_var *var, if (opline->opcode == ZEND_ASSIGN) { /* We can't drop the ASSIGN, but we can remove the result. */ if (var->use_chain < 0 && var->phi_use_chain == NULL) { - opline->result_type = IS_UNUSED; + SET_UNUSED(opline->result); zend_ssa_remove_result_def(ssa, ssa_op); } return 0; @@ -2165,7 +2165,7 @@ static int try_remove_definition(sccp_ctx *ctx, int var_num, zend_ssa_var *var, case ZEND_YIELD: case ZEND_YIELD_FROM: case ZEND_ASSERT_CHECK: - opline->result_type = IS_UNUSED; + SET_UNUSED(opline->result); zend_ssa_remove_result_def(ssa, ssa_op); break; default: @@ -2237,7 +2237,7 @@ static int try_remove_definition(sccp_ctx *ctx, int var_num, zend_ssa_var *var, * operand, based on type inference information. Make sure the operand is * freed and leave further cleanup to DCE. */ opline->opcode = ZEND_FREE; - opline->result_type = IS_UNUSED; + SET_UNUSED(opline->result); removed_ops++; } else { return 0; @@ -2305,7 +2305,7 @@ static int try_remove_definition(sccp_ctx *ctx, int var_num, zend_ssa_var *var, if (ssa->vars[ssa_op->result_def].use_chain < 0 && ssa->vars[ssa_op->result_def].phi_use_chain == NULL) { zend_ssa_remove_result_def(ssa, ssa_op); - opline->result_type = IS_UNUSED; + SET_UNUSED(opline->result); } else if (opline->opcode != ZEND_PRE_INC && opline->opcode != ZEND_PRE_DEC) { /* op1_def and result_def are different */ diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 0a7ab7da1bd5f..a2bd8a1c03883 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -2708,7 +2708,7 @@ void zend_emit_final_return(bool return_one) /* {{{ */ } ret = zend_emit_op(NULL, returns_reference ? ZEND_RETURN_BY_REF : ZEND_RETURN, &zn, NULL); - ret->extended_value = -1; + ret->extended_value = 0; } /* }}} */ @@ -3051,7 +3051,7 @@ static zend_op *zend_delayed_compile_dim(znode *result, zend_ast *ast, uint32_t zend_ast *dim_ast = ast->child[1]; zend_op *opline; - znode var_node, dim_node; + znode var_node, dim_node = {0}; if (is_globals_fetch(var_ast)) { if (dim_ast == NULL) { @@ -3121,7 +3121,7 @@ static zend_op *zend_delayed_compile_prop(znode *result, zend_ast *ast, uint32_t zend_ast *obj_ast = ast->child[0]; zend_ast *prop_ast = ast->child[1]; - znode obj_node, prop_node; + znode obj_node = {0}, prop_node; zend_op *opline; bool nullsafe = ast->kind == ZEND_AST_NULLSAFE_PROP; @@ -5236,7 +5236,7 @@ static void zend_compile_method_call(znode *result, zend_ast *ast, uint32_t type zend_ast *method_ast = ast->child[1]; zend_ast *args_ast = ast->child[2]; - znode obj_node, method_node; + znode obj_node = {0}, method_node; zend_op *opline; zend_function *fbc = NULL; bool nullsafe = ast->kind == ZEND_AST_NULLSAFE_METHOD_CALL; @@ -5349,6 +5349,7 @@ static void zend_compile_static_call(znode *result, zend_ast *ast, uint32_t type if (zend_is_constructor(Z_STR_P(name))) { zval_ptr_dtor(name); method_node.op_type = IS_UNUSED; + method_node.u.op.num = 0; } } @@ -7782,7 +7783,7 @@ static void zend_compile_params(zend_ast *ast, zend_ast *return_type_ast, uint32 CG(zend_lineno) = param_ast->lineno; - znode var_node, default_node; + znode var_node, default_node = {0}; uint8_t opcode; zend_op *opline; zend_arg_info *arg_info; @@ -11221,7 +11222,7 @@ static void zend_compile_encaps_list(znode *result, zend_ast *ast) /* {{{ */ uint32_t i, j; uint32_t rope_init_lineno = -1; zend_op *opline = NULL, *init_opline; - znode elem_node, last_const_node; + znode elem_node, last_const_node = {0}; zend_ast_list *list = zend_ast_get_list(ast); uint32_t reserved_op_number = -1; diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index 6c444340a9e76..83ae104ea5999 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -35,7 +35,7 @@ #define SET_UNUSED(op) do { \ op ## _type = IS_UNUSED; \ - op.num = (uint32_t) -1; \ + op.num = 0; \ } while (0) #define MAKE_NOP(opline) do { \ diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 3908299a41c3f..8e94fc79dc54b 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -96,11 +96,19 @@ # define OPLINE_C # define OPLINE_DC # define OPLINE_CC +# define SLIM_OPLINE_D void +# define SLIM_OPLINE_C +# define SLIM_OPLINE_DC +# define SLIM_OPLINE_CC #else # define OPLINE_D const zend_op* opline # define OPLINE_C opline # define OPLINE_DC , OPLINE_D # define OPLINE_CC , OPLINE_C +# define SLIM_OPLINE_D const zend_op* opline +# define SLIM_OPLINE_C opline +# define SLIM_OPLINE_DC , SLIM_OPLINE_D +# define SLIM_OPLINE_CC , SLIM_OPLINE_C #endif #if defined(ZEND_VM_IP_GLOBAL_REG) && ((ZEND_VM_KIND == ZEND_VM_KIND_CALL) || (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)) @@ -132,6 +140,8 @@ typedef int (ZEND_FASTCALL *incdec_t)(zval *); #define RETURN_VALUE_USED(opline) ((opline)->result_type != IS_UNUSED) +#define RETURN_VALUE(opline) (RETURN_VALUE_USED(opline) ? EX_VAR(opline->result.num) : NULL) + static ZEND_FUNCTION(pass) { } @@ -593,7 +603,7 @@ static zend_never_inline zval* zend_assign_to_typed_property_reference(zend_prop return prop; } -static zend_never_inline ZEND_COLD zval *zend_wrong_assign_to_variable_reference(zval *variable_ptr, zval *value_ptr, zend_refcounted **garbage_ptr OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline ZEND_COLD zval *zend_wrong_assign_to_variable_reference(zval *variable_ptr, zval *value_ptr, zend_refcounted **garbage_ptr EXECUTE_DATA_DC) { zend_error(E_NOTICE, "Only variables should be assigned by reference"); if (UNEXPECTED(EG(exception) != NULL)) { @@ -647,7 +657,7 @@ static zend_never_inline ZEND_COLD void zend_throw_access_uninit_prop_by_ref_err } /* this should modify object only if it's empty */ -static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_throw_non_object_error(const zval *object, zval *property OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_throw_non_object_error(const zval *object, zval *property SLIM_OPLINE_DC EXECUTE_DATA_DC) { zend_string *tmp_property_name; zend_string *property_name = zval_get_tmp_string(property, &tmp_property_name); @@ -1556,12 +1566,12 @@ static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_illegal_string_offset zend_illegal_container_offset(ZSTR_KNOWN(ZEND_STR_STRING), offset, type); } -static zend_never_inline void zend_assign_to_object_dim(zend_object *obj, zval *dim, zval *value OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void zend_assign_to_object_dim(zend_object *obj, zval *dim, zval *value, zval *return_value EXECUTE_DATA_DC) { obj->handlers->write_dimension(obj, dim, value); - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_COPY(EX_VAR(opline->result.var), value); + if (UNEXPECTED(return_value)) { + ZVAL_COPY(return_value, value); } } @@ -1613,7 +1623,7 @@ ZEND_API void zend_frameless_observed_call(zend_execute_data *execute_data) } -static zend_always_inline int zend_binary_op(zval *ret, zval *op1, zval *op2 OPLINE_DC) +static zend_always_inline int zend_binary_op(zval *ret, zval *op1, zval *op2, uint32_t extended_value) { static const binary_op_type zend_binary_ops[] = { add_function, @@ -1630,12 +1640,12 @@ static zend_always_inline int zend_binary_op(zval *ret, zval *op1, zval *op2 OPL pow_function }; /* size_t cast makes GCC to better optimize 64-bit PIC code */ - size_t opcode = (size_t)opline->extended_value; + size_t opcode = (size_t)extended_value; return zend_binary_ops[opcode - ZEND_ADD](ret, op1, op2); } -static zend_never_inline void zend_binary_assign_op_obj_dim(zend_object *obj, zval *property OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void zend_binary_assign_op_obj_dim(zend_object *obj, zval *property SLIM_OPLINE_DC EXECUTE_DATA_DC) { zval *value; zval *z; @@ -1648,7 +1658,7 @@ static zend_never_inline void zend_binary_assign_op_obj_dim(zend_object *obj, zv value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1); if ((z = obj->handlers->read_dimension(obj, property, BP_VAR_R, &rv)) != NULL) { - if (zend_binary_op(&res, z, value OPLINE_CC) == SUCCESS) { + if (zend_binary_op(&res, z, value, opline->extended_value) == SUCCESS) { obj->handlers->write_dimension(obj, property, &res); } if (z == &rv) { @@ -1670,18 +1680,18 @@ static zend_never_inline void zend_binary_assign_op_obj_dim(zend_object *obj, zv } } -static zend_never_inline void zend_binary_assign_op_typed_ref(zend_reference *ref, zval *value OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void zend_binary_assign_op_typed_ref(zend_reference *ref, zval *value, uint32_t extended_value EXECUTE_DATA_DC) { zval z_copy; /* Make sure that in-place concatenation is used if the LHS is a string. */ - if (opline->extended_value == ZEND_CONCAT && Z_TYPE(ref->val) == IS_STRING) { + if (extended_value == ZEND_CONCAT && Z_TYPE(ref->val) == IS_STRING) { concat_function(&ref->val, &ref->val, value); ZEND_ASSERT(Z_TYPE(ref->val) == IS_STRING && "Concat should return string"); return; } - zend_binary_op(&z_copy, &ref->val, value OPLINE_CC); + zend_binary_op(&z_copy, &ref->val, value, extended_value); if (EXPECTED(zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()))) { zval_ptr_dtor(&ref->val); ZVAL_COPY_VALUE(&ref->val, &z_copy); @@ -1690,18 +1700,18 @@ static zend_never_inline void zend_binary_assign_op_typed_ref(zend_reference *re } } -static zend_never_inline void zend_binary_assign_op_typed_prop(const zend_property_info *prop_info, zval *zptr, zval *value OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void zend_binary_assign_op_typed_prop(const zend_property_info *prop_info, zval *zptr, zval *value, uint32_t extended_value EXECUTE_DATA_DC) { zval z_copy; /* Make sure that in-place concatenation is used if the LHS is a string. */ - if (opline->extended_value == ZEND_CONCAT && Z_TYPE_P(zptr) == IS_STRING) { + if (extended_value == ZEND_CONCAT && Z_TYPE_P(zptr) == IS_STRING) { concat_function(zptr, zptr, value); ZEND_ASSERT(Z_TYPE_P(zptr) == IS_STRING && "Concat should return string"); return; } - zend_binary_op(&z_copy, zptr, value OPLINE_CC); + zend_binary_op(&z_copy, zptr, value, extended_value); if (EXPECTED(zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) { zval_ptr_dtor(zptr); ZVAL_COPY_VALUE(zptr, &z_copy); @@ -2011,7 +2021,7 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_false_to_array_deprecated(void) zend_error(E_DEPRECATED, "Automatic conversion of false to array is deprecated"); } -static zend_never_inline void zend_assign_to_string_offset(zval *str, zval *dim, zval *value OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void zend_assign_to_string_offset(zval *str, zval *dim, zval *value, zval *return_value EXECUTE_DATA_DC) { zend_uchar c; size_t string_len; @@ -2073,7 +2083,8 @@ static zend_never_inline void zend_assign_to_string_offset(zval *str, zval *dim, * Temporarily increase the refcount to detect this situation. */ GC_ADDREF(s); if (UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { - zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + // fetch from wide op + //zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); } /* Convert to string, just the time to pick the 1st byte */ tmp = zval_try_get_string_func(value); @@ -2082,14 +2093,14 @@ static zend_never_inline void zend_assign_to_string_offset(zval *str, zval *dim, if (tmp) { zend_string_release_ex(tmp, 0); } - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); + if (UNEXPECTED(return_value)) { + ZVAL_NULL(return_value); } return; } if (UNEXPECTED(!tmp)) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_UNDEF(EX_VAR(opline->result.var)); + if (UNEXPECTED(return_value)) { + ZVAL_UNDEF(return_value); } return; } @@ -2106,8 +2117,8 @@ static zend_never_inline void zend_assign_to_string_offset(zval *str, zval *dim, if (string_len == 0) { /* Error on empty input string */ zend_throw_error(NULL, "Cannot assign an empty string to a string offset"); - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); + if (UNEXPECTED(return_value)) { + ZVAL_NULL(return_value); } return; } @@ -2118,15 +2129,15 @@ static zend_never_inline void zend_assign_to_string_offset(zval *str, zval *dim, zend_error(E_WARNING, "Only the first byte will be assigned to the string offset"); if (UNEXPECTED(GC_DELREF(s) == 0)) { zend_string_efree(s); - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); + if (UNEXPECTED(return_value)) { + ZVAL_NULL(return_value); } return; } /* Illegal offset assignment */ if (UNEXPECTED(EG(exception) != NULL)) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_UNDEF(EX_VAR(opline->result.var)); + if (UNEXPECTED(return_value)) { + ZVAL_UNDEF(return_value); } return; } @@ -2144,9 +2155,9 @@ static zend_never_inline void zend_assign_to_string_offset(zval *str, zval *dim, Z_STRVAL_P(str)[offset] = c; - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + if (UNEXPECTED(return_value)) { /* Return the new character */ - ZVAL_CHAR(EX_VAR(opline->result.var), c); + ZVAL_CHAR(return_value, c); } } @@ -2162,7 +2173,7 @@ static zend_property_info *zend_get_prop_not_accepting_double(zend_reference *re } static ZEND_COLD zend_long zend_throw_incdec_ref_error( - zend_reference *ref, zend_property_info *error_prop OPLINE_DC) + zend_reference *ref, zend_property_info *error_prop SLIM_OPLINE_DC) { zend_string *type_str = zend_type_to_string(error_prop->type); if (ZEND_IS_INCREMENT(opline->opcode)) { @@ -2184,7 +2195,7 @@ static ZEND_COLD zend_long zend_throw_incdec_ref_error( } } -static ZEND_COLD zend_long zend_throw_incdec_prop_error(zend_property_info *prop OPLINE_DC) { +static ZEND_COLD zend_long zend_throw_incdec_prop_error(zend_property_info *prop SLIM_OPLINE_DC) { zend_string *type_str = zend_type_to_string(prop->type); if (ZEND_IS_INCREMENT(opline->opcode)) { zend_type_error("Cannot increment property %s::$%s of type %s past its maximal value", @@ -2203,7 +2214,7 @@ static ZEND_COLD zend_long zend_throw_incdec_prop_error(zend_property_info *prop } } -static void zend_incdec_typed_ref(zend_reference *ref, zval *copy OPLINE_DC EXECUTE_DATA_DC) +static void zend_incdec_typed_ref(zend_reference *ref, zval *copy, uint8_t opcode SLIM_OPLINE_DC EXECUTE_DATA_DC) { zval tmp; zval *var_ptr = &ref->val; @@ -2214,7 +2225,7 @@ static void zend_incdec_typed_ref(zend_reference *ref, zval *copy OPLINE_DC EXEC ZVAL_COPY(copy, var_ptr); - if (ZEND_IS_INCREMENT(opline->opcode)) { + if (ZEND_IS_INCREMENT(opcode)) { increment_function(var_ptr); } else { decrement_function(var_ptr); @@ -2223,7 +2234,7 @@ static void zend_incdec_typed_ref(zend_reference *ref, zval *copy OPLINE_DC EXEC if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_DOUBLE) && Z_TYPE_P(copy) == IS_LONG) { zend_property_info *error_prop = zend_get_prop_not_accepting_double(ref); if (UNEXPECTED(error_prop)) { - zend_long val = zend_throw_incdec_ref_error(ref, error_prop OPLINE_CC); + zend_long val = zend_throw_incdec_ref_error(ref, error_prop SLIM_OPLINE_CC); ZVAL_LONG(var_ptr, val); } } else if (UNEXPECTED(!zend_verify_ref_assignable_zval(ref, var_ptr, EX_USES_STRICT_TYPES()))) { @@ -2235,7 +2246,7 @@ static void zend_incdec_typed_ref(zend_reference *ref, zval *copy OPLINE_DC EXEC } } -static void zend_incdec_typed_prop(zend_property_info *prop_info, zval *var_ptr, zval *copy OPLINE_DC EXECUTE_DATA_DC) +static void zend_incdec_typed_prop(zend_property_info *prop_info, zval *var_ptr, zval *copy, uint8_t opcode SLIM_OPLINE_DC EXECUTE_DATA_DC) { zval tmp; @@ -2245,7 +2256,7 @@ static void zend_incdec_typed_prop(zend_property_info *prop_info, zval *var_ptr, ZVAL_COPY(copy, var_ptr); - if (ZEND_IS_INCREMENT(opline->opcode)) { + if (ZEND_IS_INCREMENT(opcode)) { increment_function(var_ptr); } else { decrement_function(var_ptr); @@ -2253,7 +2264,7 @@ static void zend_incdec_typed_prop(zend_property_info *prop_info, zval *var_ptr, if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_DOUBLE) && Z_TYPE_P(copy) == IS_LONG) { if (!(ZEND_TYPE_FULL_MASK(prop_info->type) & MAY_BE_DOUBLE)) { - zend_long val = zend_throw_incdec_prop_error(prop_info OPLINE_CC); + zend_long val = zend_throw_incdec_prop_error(prop_info SLIM_OPLINE_CC); ZVAL_LONG(var_ptr, val); } } else if (UNEXPECTED(!zend_verify_property_type(prop_info, var_ptr, EX_USES_STRICT_TYPES()))) { @@ -2265,17 +2276,17 @@ static void zend_incdec_typed_prop(zend_property_info *prop_info, zval *var_ptr, } } -static void zend_pre_incdec_property_zval(zval *prop, zend_property_info *prop_info OPLINE_DC EXECUTE_DATA_DC) +static void zend_pre_incdec_property_zval(zval *prop, zend_property_info *prop_info, uint8_t opcode, zval *return_value SLIM_OPLINE_DC EXECUTE_DATA_DC) { if (EXPECTED(Z_TYPE_P(prop) == IS_LONG)) { - if (ZEND_IS_INCREMENT(opline->opcode)) { + if (ZEND_IS_INCREMENT(opcode)) { fast_long_increment_function(prop); } else { fast_long_decrement_function(prop); } if (UNEXPECTED(Z_TYPE_P(prop) != IS_LONG) && prop_info && !(ZEND_TYPE_FULL_MASK(prop_info->type) & MAY_BE_DOUBLE)) { - zend_long val = zend_throw_incdec_prop_error(prop_info OPLINE_CC); + zend_long val = zend_throw_incdec_prop_error(prop_info SLIM_OPLINE_CC); ZVAL_LONG(prop, val); } } else { @@ -2284,37 +2295,37 @@ static void zend_pre_incdec_property_zval(zval *prop, zend_property_info *prop_i zend_reference *ref = Z_REF_P(prop); prop = Z_REFVAL_P(prop); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, NULL, opcode SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } if (prop_info) { - zend_incdec_typed_prop(prop_info, prop, NULL OPLINE_CC EXECUTE_DATA_CC); - } else if (ZEND_IS_INCREMENT(opline->opcode)) { + zend_incdec_typed_prop(prop_info, prop, NULL, opcode OPLINE_CC EXECUTE_DATA_CC); + } else if (ZEND_IS_INCREMENT(opcode)) { increment_function(prop); } else { decrement_function(prop); } } while (0); } - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_COPY(EX_VAR(opline->result.var), prop); + if (UNEXPECTED(return_value)) { + ZVAL_COPY(return_value, prop); } } -static void zend_post_incdec_property_zval(zval *prop, zend_property_info *prop_info OPLINE_DC EXECUTE_DATA_DC) +static void zend_post_incdec_property_zval(zval *prop, zend_property_info *prop_info, uint8_t opcode, zval *return_value SLIM_OPLINE_DC EXECUTE_DATA_DC) { if (EXPECTED(Z_TYPE_P(prop) == IS_LONG)) { - ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(prop)); - if (ZEND_IS_INCREMENT(opline->opcode)) { + ZVAL_LONG(return_value, Z_LVAL_P(prop)); + if (ZEND_IS_INCREMENT(opcode)) { fast_long_increment_function(prop); } else { fast_long_decrement_function(prop); } if (UNEXPECTED(Z_TYPE_P(prop) != IS_LONG) && prop_info && !(ZEND_TYPE_FULL_MASK(prop_info->type) & MAY_BE_DOUBLE)) { - zend_long val = zend_throw_incdec_prop_error(prop_info OPLINE_CC); + zend_long val = zend_throw_incdec_prop_error(prop_info SLIM_OPLINE_CC); ZVAL_LONG(prop, val); } } else { @@ -2322,16 +2333,16 @@ static void zend_post_incdec_property_zval(zval *prop, zend_property_info *prop_ zend_reference *ref = Z_REF_P(prop); prop = Z_REFVAL_P(prop); if (ZEND_REF_HAS_TYPE_SOURCES(ref)) { - zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, return_value, opcode SLIM_OPLINE_CC EXECUTE_DATA_CC); return; } } if (prop_info) { - zend_incdec_typed_prop(prop_info, prop, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_prop(prop_info, prop, return_value, opcode SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - ZVAL_COPY(EX_VAR(opline->result.var), prop); - if (ZEND_IS_INCREMENT(opline->opcode)) { + ZVAL_COPY(return_value, prop); + if (ZEND_IS_INCREMENT(opcode)) { increment_function(prop); } else { decrement_function(prop); @@ -2340,7 +2351,7 @@ static void zend_post_incdec_property_zval(zval *prop, zend_property_info *prop_ } } -static zend_never_inline void zend_post_incdec_overloaded_property(zend_object *object, zend_string *name, void **cache_slot OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void zend_post_incdec_overloaded_property(zend_object *object, zend_string *name, void **cache_slot, uint8_t opcode, zval *return_value SLIM_OPLINE_DC EXECUTE_DATA_DC) { zval rv; zval *z; @@ -2350,13 +2361,13 @@ static zend_never_inline void zend_post_incdec_overloaded_property(zend_object * z =object->handlers->read_property(object, name, BP_VAR_R, cache_slot, &rv); if (UNEXPECTED(EG(exception))) { OBJ_RELEASE(object); - ZVAL_UNDEF(EX_VAR(opline->result.var)); + ZVAL_UNDEF(return_value); return; } ZVAL_COPY_DEREF(&z_copy, z); - ZVAL_COPY(EX_VAR(opline->result.var), &z_copy); - if (ZEND_IS_INCREMENT(opline->opcode)) { + ZVAL_COPY(return_value, &z_copy); + if (ZEND_IS_INCREMENT(opcode)) { increment_function(&z_copy); } else { decrement_function(&z_copy); @@ -2369,7 +2380,7 @@ static zend_never_inline void zend_post_incdec_overloaded_property(zend_object * } } -static zend_never_inline void zend_pre_incdec_overloaded_property(zend_object *object, zend_string *name, void **cache_slot OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void zend_pre_incdec_overloaded_property(zend_object *object, zend_string *name, void **cache_slot, uint8_t opcode, zval *return_value SLIM_OPLINE_DC EXECUTE_DATA_DC) { zval rv; zval *z; @@ -2379,20 +2390,20 @@ static zend_never_inline void zend_pre_incdec_overloaded_property(zend_object *o z = object->handlers->read_property(object, name, BP_VAR_R, cache_slot, &rv); if (UNEXPECTED(EG(exception))) { OBJ_RELEASE(object); - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); + if (UNEXPECTED(return_value)) { + ZVAL_NULL(return_value); } return; } ZVAL_COPY_DEREF(&z_copy, z); - if (ZEND_IS_INCREMENT(opline->opcode)) { + if (ZEND_IS_INCREMENT(opcode)) { increment_function(&z_copy); } else { decrement_function(&z_copy); } - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_COPY(EX_VAR(opline->result.var), &z_copy); + if (UNEXPECTED(return_value)) { + ZVAL_COPY(return_value, &z_copy); } object->handlers->write_property(object, name, &z_copy, cache_slot); OBJ_RELEASE(object); @@ -2402,7 +2413,7 @@ static zend_never_inline void zend_pre_incdec_overloaded_property(zend_object *o } } -static zend_never_inline void zend_assign_op_overloaded_property(zend_object *object, zend_string *name, void **cache_slot, zval *value OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void zend_assign_op_overloaded_property(zend_object *object, zend_string *name, void **cache_slot, zval *value, zval *return_value, uint32_t extended_value EXECUTE_DATA_DC) { zval *z; zval rv, res; @@ -2411,16 +2422,16 @@ static zend_never_inline void zend_assign_op_overloaded_property(zend_object *ob z = object->handlers->read_property(object, name, BP_VAR_R, cache_slot, &rv); if (UNEXPECTED(EG(exception))) { OBJ_RELEASE(object); - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_UNDEF(EX_VAR(opline->result.var)); + if (UNEXPECTED(return_value)) { + ZVAL_UNDEF(return_value); } return; } - if (zend_binary_op(&res, z, value OPLINE_CC) == SUCCESS) { + if (zend_binary_op(&res, z, value, extended_value) == SUCCESS) { object->handlers->write_property(object, name, &res, cache_slot); } - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_COPY(EX_VAR(opline->result.var), &res); + if (UNEXPECTED(return_value)) { + ZVAL_COPY(return_value, &res); } if (z == &rv) { zval_ptr_dtor(z); @@ -2595,10 +2606,10 @@ ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_call_stack_size_err } #endif /* ZEND_CHECK_STACK_LIMIT */ -static ZEND_COLD void zend_binary_assign_op_dim_slow(zval *container, zval *dim OPLINE_DC EXECUTE_DATA_DC) +static ZEND_COLD void zend_binary_assign_op_dim_slow(zval *container, zval *dim, uint8_t op2_type EXECUTE_DATA_DC) { if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) { - if (opline->op2_type == IS_UNUSED) { + if (op2_type == IS_UNUSED) { zend_use_new_element_for_string(); } else { zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC); @@ -2987,21 +2998,18 @@ static zend_always_inline void zend_fetch_dimension_address(zval *result, zval * } } -static zend_never_inline void ZEND_FASTCALL zend_fetch_dimension_address_W(zval *container_ptr, zval *dim, int dim_type OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void ZEND_FASTCALL zend_fetch_dimension_address_W(zval *container_ptr, zval *dim, int dim_type, zval *result EXECUTE_DATA_DC) { - zval *result = EX_VAR(opline->result.var); zend_fetch_dimension_address(result, container_ptr, dim, dim_type, BP_VAR_W EXECUTE_DATA_CC); } -static zend_never_inline void ZEND_FASTCALL zend_fetch_dimension_address_RW(zval *container_ptr, zval *dim, int dim_type OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void ZEND_FASTCALL zend_fetch_dimension_address_RW(zval *container_ptr, zval *dim, int dim_type, zval *result EXECUTE_DATA_DC) { - zval *result = EX_VAR(opline->result.var); zend_fetch_dimension_address(result, container_ptr, dim, dim_type, BP_VAR_RW EXECUTE_DATA_CC); } -static zend_never_inline void ZEND_FASTCALL zend_fetch_dimension_address_UNSET(zval *container_ptr, zval *dim, int dim_type OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void ZEND_FASTCALL zend_fetch_dimension_address_UNSET(zval *container_ptr, zval *dim, int dim_type, zval *result EXECUTE_DATA_DC) { - zval *result = EX_VAR(opline->result.var); zend_fetch_dimension_address(result, container_ptr, dim, dim_type, BP_VAR_UNSET EXECUTE_DATA_CC); } @@ -3151,27 +3159,23 @@ static zend_always_inline void zend_fetch_dimension_address_read(zval *result, z } } -static zend_never_inline void ZEND_FASTCALL zend_fetch_dimension_address_read_R(zval *container, zval *dim, int dim_type OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void ZEND_FASTCALL zend_fetch_dimension_address_read_R(zval *container, zval *dim, int dim_type, zval *result EXECUTE_DATA_DC) { - zval *result = EX_VAR(opline->result.var); zend_fetch_dimension_address_read(result, container, dim, dim_type, BP_VAR_R, 0, 0 EXECUTE_DATA_CC); } -static zend_never_inline void zend_fetch_dimension_address_read_R_slow(zval *container, zval *dim OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void zend_fetch_dimension_address_read_R_slow(zval *container, zval *dim, zval *result EXECUTE_DATA_DC) { - zval *result = EX_VAR(opline->result.var); zend_fetch_dimension_address_read(result, container, dim, IS_CV, BP_VAR_R, 0, 1 EXECUTE_DATA_CC); } -static zend_never_inline void ZEND_FASTCALL zend_fetch_dimension_address_read_IS(zval *container, zval *dim, int dim_type OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void ZEND_FASTCALL zend_fetch_dimension_address_read_IS(zval *container, zval *dim, int dim_type, zval *result EXECUTE_DATA_DC) { - zval *result = EX_VAR(opline->result.var); zend_fetch_dimension_address_read(result, container, dim, dim_type, BP_VAR_IS, 0, 0 EXECUTE_DATA_CC); } -static zend_never_inline void ZEND_FASTCALL zend_fetch_dimension_address_LIST_r(zval *container, zval *dim, int dim_type OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void ZEND_FASTCALL zend_fetch_dimension_address_LIST_r(zval *container, zval *dim, int dim_type, zval *result EXECUTE_DATA_DC) { - zval *result = EX_VAR(opline->result.var); zend_fetch_dimension_address_read(result, container, dim, dim_type, BP_VAR_R, 1, 0 EXECUTE_DATA_CC); } @@ -3288,7 +3292,7 @@ static zend_never_inline bool ZEND_FASTCALL zend_isempty_dim_slow(zval *containe } } -static zend_never_inline bool ZEND_FASTCALL zend_array_key_exists_fast(HashTable *ht, zval *key OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline bool ZEND_FASTCALL zend_array_key_exists_fast(HashTable *ht, zval *key EXECUTE_DATA_DC) { zend_string *str; zend_ulong hval; @@ -3334,7 +3338,7 @@ static zend_never_inline bool ZEND_FASTCALL zend_array_key_exists_fast(HashTable } static ZEND_COLD void ZEND_FASTCALL zend_array_key_exists_error( - zval *subject, zval *key OPLINE_DC EXECUTE_DATA_DC) + zval *subject, zval *key SLIM_OPLINE_DC EXECUTE_DATA_DC) { if (Z_TYPE_P(key) == IS_UNDEF) { ZVAL_UNDEFINED_OP1(); @@ -3412,7 +3416,7 @@ static zend_never_inline bool zend_handle_fetch_obj_flags( return 1; } -static zend_always_inline void zend_fetch_property_address(zval *result, zval *container, uint32_t container_op_type, zval *prop_ptr, uint32_t prop_op_type, void **cache_slot, int type, uint32_t flags, zend_property_info **prop_info_p OPLINE_DC EXECUTE_DATA_DC) +static zend_always_inline void zend_fetch_property_address(zval *result, zval *container, uint32_t container_op_type, zval *prop_ptr, uint32_t prop_op_type, void **cache_slot, int type, uint32_t flags, zend_property_info **prop_info_p SLIM_OPLINE_DC EXECUTE_DATA_DC) { zval *ptr; zend_object *zobj; @@ -3443,7 +3447,7 @@ static zend_always_inline void zend_fetch_property_address(zval *result, zval *c return; } - zend_throw_non_object_error(container, prop_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(container, prop_ptr SLIM_OPLINE_CC EXECUTE_DATA_CC); ZVAL_ERROR(result); return; } while (0); @@ -3555,24 +3559,24 @@ static zend_always_inline void zend_fetch_property_address(zval *result, zval *c } } -static zend_always_inline void zend_assign_to_property_reference(zval *container, uint32_t container_op_type, zval *prop_ptr, uint32_t prop_op_type, zval *value_ptr OPLINE_DC EXECUTE_DATA_DC) +static zend_always_inline void zend_assign_to_property_reference(zval *container, uint32_t container_op_type, zval *prop_ptr, uint32_t prop_op_type, zval *value_ptr, zval *return_value, uint32_t extended_value SLIM_OPLINE_DC EXECUTE_DATA_DC) { zval variable, *variable_ptr = &variable; - void **cache_addr = (prop_op_type == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL; + void **cache_addr = (prop_op_type == IS_CONST) ? CACHE_ADDR(extended_value & ~ZEND_RETURNS_FUNCTION) : NULL; zend_refcounted *garbage = NULL; zend_property_info *prop_info = NULL; zend_fetch_property_address(variable_ptr, container, container_op_type, prop_ptr, prop_op_type, - cache_addr, BP_VAR_W, 0, &prop_info OPLINE_CC EXECUTE_DATA_CC); + cache_addr, BP_VAR_W, 0, &prop_info SLIM_OPLINE_CC EXECUTE_DATA_CC); if (EXPECTED(Z_TYPE_P(variable_ptr) == IS_INDIRECT)) { variable_ptr = Z_INDIRECT_P(variable_ptr); if (/*OP_DATA_TYPE == IS_VAR &&*/ - (opline->extended_value & ZEND_RETURNS_FUNCTION) && + (extended_value & ZEND_RETURNS_FUNCTION) && UNEXPECTED(!Z_ISREF_P(value_ptr))) { variable_ptr = zend_wrong_assign_to_variable_reference( - variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC); + variable_ptr, value_ptr, &garbage EXECUTE_DATA_CC); } else if (prop_info && ZEND_TYPE_IS_SET(prop_info->type)) { variable_ptr = zend_assign_to_typed_property_reference(prop_info, variable_ptr, value_ptr, &garbage EXECUTE_DATA_CC); } else { @@ -3586,55 +3590,53 @@ static zend_always_inline void zend_assign_to_property_reference(zval *container variable_ptr = &EG(uninitialized_zval); } - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr); + if (UNEXPECTED(return_value)) { + ZVAL_COPY(return_value, variable_ptr); } if (garbage) { GC_DTOR(garbage); } } -static zend_never_inline void zend_assign_to_property_reference_this_const(zval *container, zval *prop_ptr, zval *value_ptr OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void zend_assign_to_property_reference_this_const(zval *container, zval *prop_ptr, zval *value_ptr, zval *return_value, uint32_t extended_value SLIM_OPLINE_DC EXECUTE_DATA_DC) { - zend_assign_to_property_reference(container, IS_UNUSED, prop_ptr, IS_CONST, value_ptr - OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_UNUSED, prop_ptr, IS_CONST, value_ptr, + return_value, extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } -static zend_never_inline void zend_assign_to_property_reference_var_const(zval *container, zval *prop_ptr, zval *value_ptr OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void zend_assign_to_property_reference_var_const(zval *container, zval *prop_ptr, zval *value_ptr, zval *return_value, uint32_t extended_value SLIM_OPLINE_DC EXECUTE_DATA_DC) { - zend_assign_to_property_reference(container, IS_VAR, prop_ptr, IS_CONST, value_ptr - OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_VAR, prop_ptr, IS_CONST, value_ptr, + return_value, extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } -static zend_never_inline void zend_assign_to_property_reference_this_var(zval *container, zval *prop_ptr, zval *value_ptr OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void zend_assign_to_property_reference_this_var(zval *container, zval *prop_ptr, zval *value_ptr, zval *return_value, uint32_t extended_value SLIM_OPLINE_DC EXECUTE_DATA_DC) { - zend_assign_to_property_reference(container, IS_UNUSED, prop_ptr, IS_VAR, value_ptr - OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_UNUSED, prop_ptr, IS_VAR, value_ptr, + return_value, extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } -static zend_never_inline void zend_assign_to_property_reference_var_var(zval *container, zval *prop_ptr, zval *value_ptr OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void zend_assign_to_property_reference_var_var(zval *container, zval *prop_ptr, zval *value_ptr, zval *return_value, uint32_t extended_value SLIM_OPLINE_DC EXECUTE_DATA_DC) { - zend_assign_to_property_reference(container, IS_VAR, prop_ptr, IS_VAR, value_ptr - OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_VAR, prop_ptr, IS_VAR, value_ptr, + return_value, extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } -static zend_never_inline zval* zend_fetch_static_property_address_ex(zend_property_info **prop_info, uint32_t cache_slot, int fetch_type OPLINE_DC EXECUTE_DATA_DC) { +static zend_never_inline zval* zend_fetch_static_property_address_ex(zend_property_info **prop_info, uint32_t cache_slot, int fetch_type, uint8_t op1_type, uint8_t op2_type, znode_op op1, znode_op op2 SLIM_OPLINE_DC EXECUTE_DATA_DC) { zval *result; zend_string *name; zend_class_entry *ce; zend_property_info *property_info; - uint8_t op1_type = opline->op1_type, op2_type = opline->op2_type; - if (EXPECTED(op2_type == IS_CONST)) { - zval *class_name = RT_CONSTANT(opline, opline->op2); + zval *class_name = RT_CONSTANT(opline, op2); ZEND_ASSERT(op1_type != IS_CONST || CACHED_PTR(cache_slot) == NULL); if (EXPECTED((ce = CACHED_PTR(cache_slot)) == NULL)) { ce = zend_fetch_class_by_name(Z_STR_P(class_name), Z_STR_P(class_name + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION); if (UNEXPECTED(ce == NULL)) { - FREE_OP(op1_type, opline->op1.var); + FREE_OP(op1_type, op1.var); return NULL; } if (UNEXPECTED(op1_type != IS_CONST)) { @@ -3643,13 +3645,13 @@ static zend_never_inline zval* zend_fetch_static_property_address_ex(zend_proper } } else { if (EXPECTED(op2_type == IS_UNUSED)) { - ce = zend_fetch_class(NULL, opline->op2.num); + ce = zend_fetch_class(NULL, op2.num); if (UNEXPECTED(ce == NULL)) { - FREE_OP(op1_type, opline->op1.var); + FREE_OP(op1_type, op1.var); return NULL; } } else { - ce = Z_CE_P(EX_VAR(opline->op2.var)); + ce = Z_CE_P(EX_VAR(op2.var)); } if (EXPECTED(op1_type == IS_CONST) && EXPECTED(CACHED_PTR(cache_slot) == ce)) { result = CACHED_PTR(cache_slot + sizeof(void *)); @@ -3659,17 +3661,17 @@ static zend_never_inline zval* zend_fetch_static_property_address_ex(zend_proper } if (EXPECTED(op1_type == IS_CONST)) { - name = Z_STR_P(RT_CONSTANT(opline, opline->op1)); + name = Z_STR_P(RT_CONSTANT(opline, op1)); result = zend_std_get_static_property_with_info(ce, name, fetch_type, &property_info); } else { zend_string *tmp_name; - zval *varname = get_zval_ptr_undef(opline->op1_type, opline->op1, BP_VAR_R); + zval *varname = get_zval_ptr_undef(op1_type, op1, BP_VAR_R); if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) { name = Z_STR_P(varname); tmp_name = NULL; } else { if (op1_type == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) { - zval_undefined_cv(opline->op1.var EXECUTE_DATA_CC); + zval_undefined_cv(op1.var EXECUTE_DATA_CC); } name = zval_get_tmp_string(varname, &tmp_name); } @@ -3677,7 +3679,7 @@ static zend_never_inline zval* zend_fetch_static_property_address_ex(zend_proper zend_tmp_string_release(tmp_name); - FREE_OP(op1_type, opline->op1.var); + FREE_OP(op1_type, op1.var); } if (UNEXPECTED(result == NULL)) { @@ -3696,15 +3698,15 @@ static zend_never_inline zval* zend_fetch_static_property_address_ex(zend_proper } -static zend_always_inline zval* zend_fetch_static_property_address(zend_property_info **prop_info, uint32_t cache_slot, int fetch_type, int flags OPLINE_DC EXECUTE_DATA_DC) { +static zend_always_inline zval* zend_fetch_static_property_address(zend_property_info **prop_info, uint32_t cache_slot, int fetch_type, int flags, uint8_t op1_type, uint8_t op2_type, znode_op op1, znode_op op2 EXECUTE_DATA_DC) { zval *result; zend_property_info *property_info; - if (opline->op1_type == IS_CONST - && (opline->op2_type == IS_CONST - || (opline->op2_type == IS_UNUSED - && ((opline->op2.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF - || (opline->op2.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT))) + if (op1_type == IS_CONST + && (op2_type == IS_CONST + || (op2_type == IS_UNUSED + && ((op2.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF + || (op2.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT))) && EXPECTED(CACHED_PTR(cache_slot + sizeof(void *)) != NULL)) { result = CACHED_PTR(cache_slot + sizeof(void *)); property_info = CACHED_PTR(cache_slot + sizeof(void *) * 2); @@ -3718,7 +3720,7 @@ static zend_always_inline zval* zend_fetch_static_property_address(zend_property return NULL; } } else { - result = zend_fetch_static_property_address_ex(&property_info, cache_slot, fetch_type OPLINE_CC EXECUTE_DATA_CC); + result = zend_fetch_static_property_address_ex(&property_info, cache_slot, fetch_type, op1_type, op2_type, op1, op2 EXECUTE_DATA_CC); if (UNEXPECTED(!result)) { return NULL; } @@ -3758,7 +3760,7 @@ ZEND_API zval* ZEND_FASTCALL zend_fetch_static_property(zend_execute_data *ex, i if (fetch_type == BP_VAR_W) { flags = opline->extended_value & ZEND_FETCH_OBJ_FLAGS; } - result = zend_fetch_static_property_address_ex(&property_info, cache_slot, fetch_type OPLINE_CC EXECUTE_DATA_CC); + result = zend_fetch_static_property_address_ex(&property_info, cache_slot, fetch_type, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (EXPECTED(result)) { if (flags && ZEND_TYPE_IS_SET(property_info->type)) { zend_handle_fetch_obj_flags(NULL, result, NULL, property_info, flags); @@ -4088,10 +4090,8 @@ ZEND_API void ZEND_FASTCALL zend_ref_del_type_source(zend_property_info_source_l } } -static zend_never_inline void zend_fetch_this_var(int type OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void zend_fetch_this_var(int type, zval *result EXECUTE_DATA_DC) { - zval *result = EX_VAR(opline->result.var); - switch (type) { case BP_VAR_R: if (EXPECTED(Z_TYPE(EX(This)) == IS_OBJECT)) { @@ -5268,7 +5268,7 @@ static zend_never_inline zend_op_array* ZEND_FASTCALL zend_include_or_eval(zval } /* }}} */ -static zend_never_inline bool ZEND_FASTCALL zend_fe_reset_iterator(zval *array_ptr, int by_ref OPLINE_DC EXECUTE_DATA_DC) /* {{{ */ +static zend_never_inline bool ZEND_FASTCALL zend_fe_reset_iterator(zval *array_ptr, int by_ref, zval *return_value EXECUTE_DATA_DC) /* {{{ */ { zend_class_entry *ce = Z_OBJCE_P(array_ptr); zend_object_iterator *iter = ce->get_iterator(ce, array_ptr, by_ref); @@ -5281,7 +5281,7 @@ static zend_never_inline bool ZEND_FASTCALL zend_fe_reset_iterator(zval *array_p if (!EG(exception)) { zend_throw_exception_ex(NULL, 0, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name)); } - ZVAL_UNDEF(EX_VAR(opline->result.var)); + ZVAL_UNDEF(return_value); return 1; } @@ -5290,7 +5290,7 @@ static zend_never_inline bool ZEND_FASTCALL zend_fe_reset_iterator(zval *array_p iter->funcs->rewind(iter); if (UNEXPECTED(EG(exception) != NULL)) { OBJ_RELEASE(&iter->std); - ZVAL_UNDEF(EX_VAR(opline->result.var)); + ZVAL_UNDEF(return_value); return 1; } } @@ -5299,20 +5299,20 @@ static zend_never_inline bool ZEND_FASTCALL zend_fe_reset_iterator(zval *array_p if (UNEXPECTED(EG(exception) != NULL)) { OBJ_RELEASE(&iter->std); - ZVAL_UNDEF(EX_VAR(opline->result.var)); + ZVAL_UNDEF(return_value); return 1; } iter->index = -1; /* will be set to 0 before using next handler */ - ZVAL_OBJ(EX_VAR(opline->result.var), &iter->std); - Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1; + ZVAL_OBJ(return_value, &iter->std); + Z_FE_ITER_P(return_value) = (uint32_t)-1; return is_empty; } /* }}} */ static zend_always_inline zend_result _zend_quick_get_constant( - const zval *key, uint32_t flags, bool check_defined_only OPLINE_DC EXECUTE_DATA_DC) /* {{{ */ + const zval *key, uint32_t flags, bool check_defined_only, zval *return_value, uint32_t extended_value SLIM_OPLINE_DC EXECUTE_DATA_DC) /* {{{ */ { zval *zv; zend_constant *c = NULL; @@ -5331,6 +5331,7 @@ static zend_always_inline zend_result _zend_quick_get_constant( if (!c) { if (!check_defined_only) { + // TODO: fetch opline from slim zend_throw_error(NULL, "Undefined constant \"%s\"", Z_STRVAL_P(RT_CONSTANT(opline, opline->op2))); ZVAL_UNDEF(EX_VAR(opline->result.var)); } @@ -5338,7 +5339,7 @@ static zend_always_inline zend_result _zend_quick_get_constant( } if (!check_defined_only) { - ZVAL_COPY_OR_DUP(EX_VAR(opline->result.var), &c->value); + ZVAL_COPY_OR_DUP(return_value, &c->value); if (ZEND_CONSTANT_FLAGS(c) & CONST_DEPRECATED) { if (!CONST_IS_RECURSIVE(c)) { CONST_PROTECT_RECURSION(c); @@ -5349,21 +5350,21 @@ static zend_always_inline zend_result _zend_quick_get_constant( } } - CACHE_PTR(opline->extended_value, c); + CACHE_PTR(extended_value, c); return SUCCESS; } /* }}} */ static zend_never_inline void ZEND_FASTCALL zend_quick_get_constant( - const zval *key, uint32_t flags OPLINE_DC EXECUTE_DATA_DC) /* {{{ */ + const zval *key, uint32_t flags, zval *return_value, uint32_t extended_value EXECUTE_DATA_DC) /* {{{ */ { - _zend_quick_get_constant(key, flags, 0 OPLINE_CC EXECUTE_DATA_CC); + _zend_quick_get_constant(key, flags, 0, return_value, extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } /* }}} */ static zend_never_inline zend_result ZEND_FASTCALL zend_quick_check_constant( - const zval *key OPLINE_DC EXECUTE_DATA_DC) /* {{{ */ + const zval *key, zval *return_value, uint32_t extended_value EXECUTE_DATA_DC) /* {{{ */ { - return _zend_quick_get_constant(key, 0, 1 OPLINE_CC EXECUTE_DATA_CC); + return _zend_quick_get_constant(key, 0, 1, return_value, extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } /* }}} */ static zend_always_inline uint32_t zend_get_arg_offset_by_name( diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 3d6463d064873..11f4e01ff208b 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -1,4 +1,4 @@ -/* +/https://github.com/php/php-src/pull/19596* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ @@ -1034,7 +1034,7 @@ ZEND_VM_HANDLER(28, ZEND_ASSIGN_OBJ_OP, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, OP) && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -1064,7 +1064,7 @@ ZEND_VM_C_LABEL(assign_op_object): ref = Z_REF_P(zptr); zptr = Z_REFVAL_P(zptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } @@ -1072,9 +1072,9 @@ ZEND_VM_C_LABEL(assign_op_object): prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); if (prop_info) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, zptr, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(zptr, zptr, value OPLINE_CC); + zend_binary_op(zptr, zptr, value, opline->extended_value); } } while (0); @@ -1083,7 +1083,7 @@ ZEND_VM_C_LABEL(assign_op_object): } } } else { - zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_op_overloaded_property(zobj, name, cache_slot, value, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); } if (OP2_TYPE != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -1109,7 +1109,8 @@ ZEND_VM_HANDLER(29, ZEND_ASSIGN_STATIC_PROP_OP, ANY, ANY, OP) SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, (opline+1)->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC); + // Consider fetching wide op from zend_fetch_static_property_address() instead + prop = zend_fetch_static_property_address(&prop_info, (opline+1)->extended_value, BP_VAR_RW, 0, OP1_TYPE, OP2_TYPE, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { UNDEF_RESULT(); FREE_OP_DATA(); @@ -1131,16 +1132,16 @@ ZEND_VM_HANDLER(29, ZEND_ASSIGN_STATIC_PROP_OP, ANY, ANY, OP) ref = Z_REF_P(prop); prop = Z_REFVAL_P(prop); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } if (ZEND_TYPE_IS_SET(prop_info->type)) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, prop, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, prop, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(prop, prop, value OPLINE_CC); + zend_binary_op(prop, prop, value, opline->extended_value); } } while (0); @@ -1193,11 +1194,11 @@ ZEND_VM_C_LABEL(assign_dim_op_new_array): zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -1219,7 +1220,7 @@ ZEND_VM_C_LABEL(assign_dim_op_new_array): if (OP2_TYPE == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_obj_dim(obj, dim SLIM_OPLINE_CC EXECUTE_DATA_CC); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { uint8_t old_type; @@ -1240,7 +1241,7 @@ ZEND_VM_C_LABEL(assign_dim_op_new_array): ZEND_VM_C_GOTO(assign_dim_op_new_array); } else { dim = GET_OP2_ZVAL_PTR(BP_VAR_R); - zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_dim_slow(container, dim, OP2_TYPE EXECUTE_DATA_CC); ZEND_VM_C_LABEL(assign_dim_op_ret_null): FREE_OP_DATA(); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -1269,11 +1270,11 @@ ZEND_VM_HANDLER(26, ZEND_ASSIGN_OP, VAR|CV, CONST|TMPVAR|CV, OP) zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -1311,7 +1312,7 @@ ZEND_VM_HANDLER(132, ZEND_PRE_INC_OBJ, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, CACH && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -1335,10 +1336,10 @@ ZEND_VM_C_LABEL(pre_incdec_object): } } else { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); - zend_pre_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (OP2_TYPE != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -1381,7 +1382,7 @@ ZEND_VM_HANDLER(134, ZEND_POST_INC_OBJ, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, CAC && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -1403,10 +1404,10 @@ ZEND_VM_C_LABEL(post_incdec_object): ZVAL_NULL(EX_VAR(opline->result.var)); } else { prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); - zend_post_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (OP2_TYPE != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -1432,7 +1433,7 @@ ZEND_VM_HANDLER(38, ZEND_PRE_INC_STATIC_PROP, ANY, ANY, CACHE_SLOT) SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC); + prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_RW, 0, OP1_TYPE, OP2_TYPE, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { UNDEF_RESULT(); HANDLE_EXCEPTION(); @@ -1446,7 +1447,7 @@ ZEND_VM_HANDLER(38, ZEND_PRE_INC_STATIC_PROP, ANY, ANY, CACHE_SLOT) } zend_pre_incdec_property_zval(prop, - ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL OPLINE_CC EXECUTE_DATA_CC); + ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -1466,7 +1467,7 @@ ZEND_VM_HANDLER(40, ZEND_POST_INC_STATIC_PROP, ANY, ANY, CACHE_SLOT) SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC); + prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_RW, 0, OP1_TYPE, OP2_TYPE, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { UNDEF_RESULT(); HANDLE_EXCEPTION(); @@ -1480,7 +1481,7 @@ ZEND_VM_HANDLER(40, ZEND_POST_INC_STATIC_PROP, ANY, ANY, CACHE_SLOT) } zend_post_incdec_property_zval(prop, - ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL OPLINE_CC EXECUTE_DATA_CC); + ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL, ZEND_POST_INC_STATIC_PROP, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -1509,7 +1510,7 @@ ZEND_VM_HELPER(zend_pre_inc_helper, VAR|CV, ANY) zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, NULL, ZEND_PRE_INC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -1561,7 +1562,7 @@ ZEND_VM_HELPER(zend_pre_dec_helper, VAR|CV, ANY) var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, NULL, ZEND_PRE_DEC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -1613,7 +1614,7 @@ ZEND_VM_HELPER(zend_post_inc_helper, VAR|CV, ANY) var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, EX_VAR(opline->result.var), ZEND_POST_INC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -1661,7 +1662,7 @@ ZEND_VM_HELPER(zend_post_dec_helper, VAR|CV, ANY) var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, EX_VAR(opline->result.var), ZEND_POST_DEC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -1754,7 +1755,7 @@ ZEND_VM_HELPER(zend_fetch_var_address_helper, CONST|TMPVAR|CV, UNUSED, int type) if (retval == NULL) { if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) { ZEND_VM_C_LABEL(fetch_this): - zend_fetch_this_var(type OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_this_var(type, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (OP1_TYPE != IS_CONST) { zend_tmp_string_release(tmp_name); } @@ -1864,7 +1865,7 @@ ZEND_VM_INLINE_HELPER(zend_fetch_static_prop_helper, ANY, ANY, int type) prop = zend_fetch_static_property_address( &prop_info, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS, type, - type == BP_VAR_W ? opline->extended_value : 0 OPLINE_CC EXECUTE_DATA_CC); + type == BP_VAR_W ? opline->extended_value : 0, OP1_TYPE, OP2_TYPE, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { ZEND_ASSERT(EG(exception) || (type == BP_VAR_IS)); prop = &EG(uninitialized_zval); @@ -1953,10 +1954,10 @@ ZEND_VM_C_LABEL(fetch_dim_r_slow): if (OP2_TYPE == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else { - zend_fetch_dimension_address_read_R(container, dim, OP2_TYPE OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, OP2_TYPE, RETURN_VALUE(opline) EXECUTE_DATA_CC); } FREE_OP2(); FREE_OP1(); @@ -1970,7 +1971,7 @@ ZEND_VM_HANDLER(84, ZEND_FETCH_DIM_W, VAR|CV, CONST|TMPVAR|UNUSED|NEXT|CV) SAVE_OPLINE(); container = GET_OP1_ZVAL_PTR_PTR_UNDEF(BP_VAR_W); - zend_fetch_dimension_address_W(container, GET_OP2_ZVAL_PTR_UNDEF(BP_VAR_R), OP2_TYPE OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, GET_OP2_ZVAL_PTR_UNDEF(BP_VAR_R), OP2_TYPE, RETURN_VALUE(opline) EXECUTE_DATA_CC); FREE_OP2(); if (OP1_TYPE == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -1985,7 +1986,7 @@ ZEND_VM_HANDLER(87, ZEND_FETCH_DIM_RW, VAR|CV, CONST|TMPVAR|UNUSED|NEXT|CV) SAVE_OPLINE(); container = GET_OP1_ZVAL_PTR_PTR_UNDEF(BP_VAR_RW); - zend_fetch_dimension_address_RW(container, GET_OP2_ZVAL_PTR_UNDEF(BP_VAR_R), OP2_TYPE OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_RW(container, GET_OP2_ZVAL_PTR_UNDEF(BP_VAR_R), OP2_TYPE, RETURN_VALUE(opline) EXECUTE_DATA_CC); FREE_OP2(); if (OP1_TYPE == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -2000,7 +2001,7 @@ ZEND_VM_COLD_CONSTCONST_HANDLER(90, ZEND_FETCH_DIM_IS, CONST|TMPVAR|CV, CONST|TM SAVE_OPLINE(); container = GET_OP1_ZVAL_PTR_UNDEF(BP_VAR_IS); - zend_fetch_dimension_address_read_IS(container, GET_OP2_ZVAL_PTR_UNDEF(BP_VAR_R), OP2_TYPE OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_IS(container, GET_OP2_ZVAL_PTR_UNDEF(BP_VAR_R), OP2_TYPE, RETURN_VALUE(opline) EXECUTE_DATA_CC); FREE_OP2(); FREE_OP1(); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -2056,7 +2057,7 @@ ZEND_VM_HANDLER(96, ZEND_FETCH_DIM_UNSET, VAR|CV, CONST|TMPVAR|CV) SAVE_OPLINE(); container = GET_OP1_ZVAL_PTR_PTR_UNDEF(BP_VAR_UNSET); - zend_fetch_dimension_address_UNSET(container, GET_OP2_ZVAL_PTR_UNDEF(BP_VAR_R), OP2_TYPE OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_UNSET(container, GET_OP2_ZVAL_PTR_UNDEF(BP_VAR_R), OP2_TYPE, RETURN_VALUE(opline) EXECUTE_DATA_CC); FREE_OP2(); if (OP1_TYPE == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -2246,7 +2247,7 @@ ZEND_VM_HANDLER(85, ZEND_FETCH_OBJ_W, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, FETCH zend_fetch_property_address( result, container, OP1_TYPE, property, OP2_TYPE, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL), - BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC); + BP_VAR_W, opline->extended_value, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); FREE_OP2(); if (OP1_TYPE == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -2263,7 +2264,7 @@ ZEND_VM_HANDLER(88, ZEND_FETCH_OBJ_RW, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, CACH container = GET_OP1_OBJ_ZVAL_PTR_PTR_UNDEF(BP_VAR_RW); property = GET_OP2_ZVAL_PTR(BP_VAR_R); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, OP1_TYPE, property, OP2_TYPE, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, OP1_TYPE, property, OP2_TYPE, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); FREE_OP2(); if (OP1_TYPE == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -2418,7 +2419,7 @@ ZEND_VM_HANDLER(97, ZEND_FETCH_OBJ_UNSET, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, C container = GET_OP1_OBJ_ZVAL_PTR_PTR_UNDEF(BP_VAR_UNSET); property = GET_OP2_ZVAL_PTR(BP_VAR_R); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, OP1_TYPE, property, OP2_TYPE, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, OP1_TYPE, property, OP2_TYPE, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); FREE_OP2(); if (OP1_TYPE == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -2433,7 +2434,7 @@ ZEND_VM_HANDLER(98, ZEND_FETCH_LIST_R, CONST|TMPVARCV, CONST|TMPVAR|CV) SAVE_OPLINE(); container = GET_OP1_ZVAL_PTR_UNDEF(BP_VAR_R); - zend_fetch_dimension_address_LIST_r(container, GET_OP2_ZVAL_PTR_UNDEF(BP_VAR_R), OP2_TYPE OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, GET_OP2_ZVAL_PTR_UNDEF(BP_VAR_R), OP2_TYPE, RETURN_VALUE(opline) EXECUTE_DATA_CC); FREE_OP2(); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -2452,9 +2453,9 @@ ZEND_VM_HANDLER(155, ZEND_FETCH_LIST_W, VAR, CONST|TMPVAR|CV) && UNEXPECTED(!Z_ISREF_P(container)) ) { zend_error(E_NOTICE, "Attempting to set reference to non referenceable value"); - zend_fetch_dimension_address_LIST_r(container, dim, OP2_TYPE OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, dim, OP2_TYPE, RETURN_VALUE(opline) EXECUTE_DATA_CC); } else { - zend_fetch_dimension_address_W(container, dim, OP2_TYPE OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, dim, OP2_TYPE, RETURN_VALUE(opline) EXECUTE_DATA_CC); } FREE_OP2(); @@ -2478,7 +2479,7 @@ ZEND_VM_HANDLER(24, ZEND_ASSIGN_OBJ, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, CACHE_ object = Z_REFVAL_P(object); ZEND_VM_C_GOTO(assign_object); } - zend_throw_non_object_error(object, GET_OP2_ZVAL_PTR(BP_VAR_R) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, GET_OP2_ZVAL_PTR(BP_VAR_R) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); ZEND_VM_C_GOTO(free_and_exit_assign_obj); } @@ -2624,7 +2625,7 @@ ZEND_VM_HANDLER(25, ZEND_ASSIGN_STATIC_PROP, ANY, ANY, CACHE_SLOT, SPEC(OP_DATA= SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC); + prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0, OP1_TYPE, OP2_TYPE, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { FREE_OP_DATA(); UNDEF_RESULT(); @@ -2748,7 +2749,7 @@ ZEND_VM_C_LABEL(try_assign_dim_array): ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); FREE_OP_DATA(); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -2762,7 +2763,7 @@ ZEND_VM_C_LABEL(try_assign_dim_array): } else { dim = GET_OP2_ZVAL_PTR_UNDEF(BP_VAR_R); value = GET_OP_DATA_ZVAL_PTR_UNDEF(BP_VAR_R); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); FREE_OP_DATA(); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -2855,7 +2856,7 @@ ZEND_VM_HANDLER(30, ZEND_ASSIGN_REF, VAR|CV, VAR|CV, SRC) UNEXPECTED(!Z_ISREF_P(value_ptr))) { variable_ptr = zend_wrong_assign_to_variable_reference( - variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC); + variable_ptr, value_ptr, &garbage EXECUTE_DATA_CC); } else { zend_assign_to_variable_reference(variable_ptr, value_ptr, &garbage); } @@ -2888,19 +2889,19 @@ ZEND_VM_HANDLER(32, ZEND_ASSIGN_OBJ_REF, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, CA if (ZEND_VM_SPEC) { if (OP1_TYPE == IS_UNUSED) { if (OP2_TYPE == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (OP2_TYPE == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, OP1_TYPE, property, OP2_TYPE, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, OP1_TYPE, property, OP2_TYPE, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } FREE_OP1(); @@ -2919,7 +2920,7 @@ ZEND_VM_HANDLER(33, ZEND_ASSIGN_STATIC_PROP_REF, ANY, ANY, CACHE_SLOT|SRC) SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, opline->extended_value & ~ZEND_RETURNS_FUNCTION, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC); + prop = zend_fetch_static_property_address(&prop_info, opline->extended_value & ~ZEND_RETURNS_FUNCTION, BP_VAR_W, 0, OP1_TYPE, OP2_TYPE, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { FREE_OP_DATA(); UNDEF_RESULT(); @@ -2937,7 +2938,7 @@ ZEND_VM_HANDLER(33, ZEND_ASSIGN_STATIC_PROP_REF, ANY, ANY, CACHE_SLOT|SRC) value_ptr = GET_OP_DATA_ZVAL_PTR_PTR(BP_VAR_W); if (OP_DATA_TYPE == IS_VAR && (opline->extended_value & ZEND_RETURNS_FUNCTION) && UNEXPECTED(!Z_ISREF_P(value_ptr))) { - if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(prop, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC))) { + if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(prop, value_ptr, &garbage EXECUTE_DATA_CC))) { prop = &EG(uninitialized_zval); } } else if (ZEND_TYPE_IS_SET(prop_info->type)) { @@ -6079,7 +6080,7 @@ ZEND_VM_HOT_HANDLER(99, ZEND_FETCH_CONSTANT, UNUSED|CONST_FETCH, CONST, CACHE_SL } SAVE_OPLINE(); - zend_quick_get_constant(RT_CONSTANT(opline, opline->op2) + 1, opline->op1.num OPLINE_CC EXECUTE_DATA_CC); + zend_quick_get_constant(RT_CONSTANT(opline, opline->op2) + 1, opline->op1.num, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -6907,7 +6908,7 @@ ZEND_VM_HANDLER(77, ZEND_FE_RESET_R, CONST|TMP|VAR|CV, JMP_ADDR) FREE_OP1_IF_VAR(); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { - bool is_empty = zend_fe_reset_iterator(array_ptr, 0 OPLINE_CC EXECUTE_DATA_CC); + bool is_empty = zend_fe_reset_iterator(array_ptr, 0, RETURN_VALUE(opline) EXECUTE_DATA_CC); FREE_OP1(); if (UNEXPECTED(EG(exception))) { @@ -7007,7 +7008,7 @@ ZEND_VM_COLD_CONST_HANDLER(125, ZEND_FE_RESET_RW, CONST|TMP|VAR|CV, JMP_ADDR) FREE_OP1_IF_VAR(); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { - bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC); + bool is_empty = zend_fe_reset_iterator(array_ptr, 1, RETURN_VALUE(opline) EXECUTE_DATA_CC); FREE_OP1(); if (UNEXPECTED(EG(exception))) { HANDLE_EXCEPTION(); @@ -7501,7 +7502,7 @@ ZEND_VM_HANDLER(180, ZEND_ISSET_ISEMPTY_STATIC_PROP, ANY, CLASS_FETCH, ISSET|CAC SAVE_OPLINE(); - value = zend_fetch_static_property_address(NULL, opline->extended_value & ~ZEND_ISEMPTY, BP_VAR_IS, 0 OPLINE_CC EXECUTE_DATA_CC); + value = zend_fetch_static_property_address(NULL, opline->extended_value & ~ZEND_ISEMPTY, BP_VAR_IS, 0, OP1_TYPE, OP2_TYPE, opline->op1, opline->op2 EXECUTE_DATA_CC); if (!(opline->extended_value & ZEND_ISEMPTY)) { result = value != NULL && Z_TYPE_P(value) > IS_NULL && @@ -7658,7 +7659,7 @@ ZEND_VM_HANDLER(194, ZEND_ARRAY_KEY_EXISTS, CV|TMPVAR|CONST, CV|TMPVAR|CONST) if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) { ZEND_VM_C_LABEL(array_key_exists_array): ht = Z_ARRVAL_P(subject); - result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC); + result = zend_array_key_exists_fast(ht, key EXECUTE_DATA_CC); } else { if ((OP2_TYPE & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) { subject = Z_REFVAL_P(subject); @@ -7666,7 +7667,7 @@ ZEND_VM_C_LABEL(array_key_exists_array): ZEND_VM_C_GOTO(array_key_exists_array); } } - zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC); + zend_array_key_exists_error(subject, key SLIM_OPLINE_CC EXECUTE_DATA_CC); result = 0; } @@ -8848,7 +8849,7 @@ ZEND_VM_C_LABEL(defined_false): ZEND_VM_SMART_BRANCH_FALSE(); } } - if (zend_quick_check_constant(RT_CONSTANT(opline, opline->op1) OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) { + if (zend_quick_check_constant(RT_CONSTANT(opline, opline->op1), RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_DC EXECUTE_DATA_CC) != SUCCESS) { CACHE_PTR(opline->extended_value, ENCODE_SPECIAL_CACHE_NUM(zend_hash_num_elements(EG(zend_constants)))); ZEND_VM_C_GOTO(defined_false); } else { @@ -10326,7 +10327,7 @@ ZEND_VM_C_LABEL(fetch_dim_r_index_array): offset = Z_LVAL_P(dim); } else { SAVE_OPLINE(); - zend_fetch_dimension_address_read_R(container, dim, OP2_TYPE OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, OP2_TYPE, RETURN_VALUE(opline) EXECUTE_DATA_CC); FREE_OP1(); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -10353,7 +10354,7 @@ ZEND_VM_C_LABEL(fetch_dim_r_index_slow): if (OP2_TYPE == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); FREE_OP1(); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index e1a94fd07a11a..60d647a599dc0 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -779,7 +779,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_STATIC SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, (opline+1)->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC); + // Consider fetching wide op from zend_fetch_static_property_address() instead + prop = zend_fetch_static_property_address(&prop_info, (opline+1)->extended_value, BP_VAR_RW, 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { UNDEF_RESULT(); FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); @@ -801,16 +802,16 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_STATIC ref = Z_REF_P(prop); prop = Z_REFVAL_P(prop); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } if (ZEND_TYPE_IS_SET(prop_info->type)) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, prop, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, prop, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(prop, prop, value OPLINE_CC); + zend_binary_op(prop, prop, value, opline->extended_value); } } while (0); @@ -831,7 +832,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_STATI SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC); + prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_RW, 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { UNDEF_RESULT(); HANDLE_EXCEPTION(); @@ -845,7 +846,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_STATI } zend_pre_incdec_property_zval(prop, - ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL OPLINE_CC EXECUTE_DATA_CC); + ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -859,7 +860,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_STAT SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC); + prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_RW, 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { UNDEF_RESULT(); HANDLE_EXCEPTION(); @@ -873,7 +874,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_STAT } zend_post_incdec_property_zval(prop, - ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL OPLINE_CC EXECUTE_DATA_CC); + ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL, ZEND_POST_INC_STATIC_PROP, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -889,7 +890,7 @@ static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_fetch_static_prop_helper_ prop = zend_fetch_static_property_address( &prop_info, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS, type, - type == BP_VAR_W ? opline->extended_value : 0 OPLINE_CC EXECUTE_DATA_CC); + type == BP_VAR_W ? opline->extended_value : 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { ZEND_ASSERT(EG(exception) || (type == BP_VAR_IS)); prop = &EG(uninitialized_zval); @@ -986,7 +987,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_STATIC SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC); + prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { UNDEF_RESULT(); @@ -1023,7 +1024,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_STATIC SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC); + prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -1060,7 +1061,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_STATIC SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC); + prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -1097,7 +1098,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_STATIC SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC); + prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { UNDEF_RESULT(); @@ -1134,7 +1135,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_STATIC SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, opline->extended_value & ~ZEND_RETURNS_FUNCTION, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC); + prop = zend_fetch_static_property_address(&prop_info, opline->extended_value & ~ZEND_RETURNS_FUNCTION, BP_VAR_W, 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); UNDEF_RESULT(); @@ -1152,7 +1153,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_STATIC value_ptr = get_zval_ptr_ptr((opline+1)->op1_type, (opline+1)->op1, BP_VAR_W); if ((opline+1)->op1_type == IS_VAR && (opline->extended_value & ZEND_RETURNS_FUNCTION) && UNEXPECTED(!Z_ISREF_P(value_ptr))) { - if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(prop, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC))) { + if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(prop, value_ptr, &garbage EXECUTE_DATA_CC))) { prop = &EG(uninitialized_zval); } } else if (ZEND_TYPE_IS_SET(prop_info->type)) { @@ -3122,7 +3123,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ISSET_ISEMPTY SAVE_OPLINE(); - value = zend_fetch_static_property_address(NULL, opline->extended_value & ~ZEND_ISEMPTY, BP_VAR_IS, 0 OPLINE_CC EXECUTE_DATA_CC); + value = zend_fetch_static_property_address(NULL, opline->extended_value & ~ZEND_ISEMPTY, BP_VAR_IS, 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (!(opline->extended_value & ZEND_ISEMPTY)) { result = value != NULL && Z_TYPE_P(value) > IS_NULL && @@ -5513,7 +5514,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FE_RESET_R_SP ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { - bool is_empty = zend_fe_reset_iterator(array_ptr, 0 OPLINE_CC EXECUTE_DATA_CC); + bool is_empty = zend_fe_reset_iterator(array_ptr, 0, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(EG(exception))) { HANDLE_EXCEPTION(); @@ -5611,7 +5612,7 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { - bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC); + bool is_empty = zend_fe_reset_iterator(array_ptr, 1, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(EG(exception))) { HANDLE_EXCEPTION(); @@ -6048,7 +6049,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_D ZEND_VM_SMART_BRANCH_FALSE(); } } - if (zend_quick_check_constant(RT_CONSTANT(opline, opline->op1) OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) { + if (zend_quick_check_constant(RT_CONSTANT(opline, opline->op1), RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_DC EXECUTE_DATA_CC) != SUCCESS) { CACHE_PTR(opline->extended_value, ENCODE_SPECIAL_CACHE_NUM(zend_hash_num_elements(EG(zend_constants)))); goto defined_false; } else { @@ -6690,10 +6691,10 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else { - zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); } @@ -6707,7 +6708,7 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ SAVE_OPLINE(); container = RT_CONSTANT(opline, opline->op1); - zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -7045,7 +7046,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_LIST_R_ SAVE_OPLINE(); container = RT_CONSTANT(opline, opline->op1); - zend_fetch_dimension_address_LIST_r(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -7994,7 +7995,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ARRAY_KEY_EXI if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) { array_key_exists_array: ht = Z_ARRVAL_P(subject); - result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC); + result = zend_array_key_exists_fast(ht, key EXECUTE_DATA_CC); } else { if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) { subject = Z_REFVAL_P(subject); @@ -8002,7 +8003,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ARRAY_KEY_EXI goto array_key_exists_array; } } - zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC); + zend_array_key_exists_error(subject, key SLIM_OPLINE_CC EXECUTE_DATA_CC); result = 0; } @@ -9136,7 +9137,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_F offset = Z_LVAL_P(dim); } else { SAVE_OPLINE(); - zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR|IS_CV) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR|IS_CV), RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -9163,7 +9164,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_F if ((IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -9320,10 +9321,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_R_S if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else { - zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); @@ -9337,7 +9338,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_IS_ SAVE_OPLINE(); container = RT_CONSTANT(opline, opline->op1); - zend_fetch_dimension_address_read_IS(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_IS(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -9675,7 +9676,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_LIST_R_ SAVE_OPLINE(); container = RT_CONSTANT(opline, opline->op1); - zend_fetch_dimension_address_LIST_r(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -10428,7 +10429,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ARRAY_KEY_EXI if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) { array_key_exists_array: ht = Z_ARRVAL_P(subject); - result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC); + result = zend_array_key_exists_fast(ht, key EXECUTE_DATA_CC); } else { if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) { subject = Z_REFVAL_P(subject); @@ -10436,7 +10437,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ARRAY_KEY_EXI goto array_key_exists_array; } } - zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC); + zend_array_key_exists_error(subject, key SLIM_OPLINE_CC EXECUTE_DATA_CC); result = 0; } @@ -10600,7 +10601,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV_ if (retval == NULL) { if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) { fetch_this: - zend_fetch_this_var(type OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_this_var(type, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); } @@ -11813,10 +11814,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_R_S if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else { - zend_fetch_dimension_address_read_R(container, dim, IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); } @@ -11830,7 +11831,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_IS_ SAVE_OPLINE(); container = RT_CONSTANT(opline, opline->op1); - zend_fetch_dimension_address_read_IS(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_IS(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -12168,7 +12169,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_LIST_R_ SAVE_OPLINE(); container = RT_CONSTANT(opline, opline->op1); - zend_fetch_dimension_address_LIST_r(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -12920,7 +12921,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ARRAY_KEY_EXI if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) { array_key_exists_array: ht = Z_ARRVAL_P(subject); - result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC); + result = zend_array_key_exists_fast(ht, key EXECUTE_DATA_CC); } else { if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) { subject = Z_REFVAL_P(subject); @@ -12928,7 +12929,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ARRAY_KEY_EXI goto array_key_exists_array; } } - zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC); + zend_array_key_exists_error(subject, key SLIM_OPLINE_CC EXECUTE_DATA_CC); result = 0; } @@ -13614,7 +13615,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_LIST_R_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_LIST_r(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -15110,7 +15111,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_LIST_R_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_LIST_r(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -15133,7 +15134,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_LIST_R_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_LIST_r(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -16344,10 +16345,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_R_S if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else { - zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -16361,7 +16362,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_IS_ SAVE_OPLINE(); container = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -17160,7 +17161,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ARRAY_KEY_EXI if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) { array_key_exists_array: ht = Z_ARRVAL_P(subject); - result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC); + result = zend_array_key_exists_fast(ht, key EXECUTE_DATA_CC); } else { if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) { subject = Z_REFVAL_P(subject); @@ -17168,7 +17169,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ARRAY_KEY_EXI goto array_key_exists_array; } } - zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC); + zend_array_key_exists_error(subject, key SLIM_OPLINE_CC EXECUTE_DATA_CC); result = 0; } @@ -17236,7 +17237,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_F offset = Z_LVAL_P(dim); } else { SAVE_OPLINE(); - zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -17263,7 +17264,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_F if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -17291,7 +17292,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_F offset = Z_LVAL_P(dim); } else { SAVE_OPLINE(); - zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR|IS_CV) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR|IS_CV), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -17318,7 +17319,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_F if ((IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -17837,10 +17838,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_R_S if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else { - zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -17854,7 +17855,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_IS_ SAVE_OPLINE(); container = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_read_IS(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_IS(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -18625,7 +18626,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ARRAY_KEY_EXI if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) { array_key_exists_array: ht = Z_ARRVAL_P(subject); - result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC); + result = zend_array_key_exists_fast(ht, key EXECUTE_DATA_CC); } else { if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) { subject = Z_REFVAL_P(subject); @@ -18633,7 +18634,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ARRAY_KEY_EXI goto array_key_exists_array; } } - zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC); + zend_array_key_exists_error(subject, key SLIM_OPLINE_CC EXECUTE_DATA_CC); result = 0; } @@ -18722,7 +18723,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV_ if (retval == NULL) { if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) { fetch_this: - zend_fetch_this_var(type OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_this_var(type, RETURN_VALUE(opline) EXECUTE_DATA_CC); if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); } @@ -19244,10 +19245,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_R_S if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else { - zend_fetch_dimension_address_read_R(container, dim, IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -19261,7 +19262,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_IS_ SAVE_OPLINE(); container = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_read_IS(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_IS(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -20032,7 +20033,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ARRAY_KEY_EXI if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) { array_key_exists_array: ht = Z_ARRVAL_P(subject); - result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC); + result = zend_array_key_exists_fast(ht, key EXECUTE_DATA_CC); } else { if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) { subject = Z_REFVAL_P(subject); @@ -20040,7 +20041,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ARRAY_KEY_EXI goto array_key_exists_array; } } - zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC); + zend_array_key_exists_error(subject, key SLIM_OPLINE_CC EXECUTE_DATA_CC); result = 0; } @@ -20359,7 +20360,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FE_RESET_R_SP ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { - bool is_empty = zend_fe_reset_iterator(array_ptr, 0 OPLINE_CC EXECUTE_DATA_CC); + bool is_empty = zend_fe_reset_iterator(array_ptr, 0, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); if (UNEXPECTED(EG(exception))) { @@ -20458,7 +20459,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FE_RESET_RW_S ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { - bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC); + bool is_empty = zend_fe_reset_iterator(array_ptr, 1, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); if (UNEXPECTED(EG(exception))) { HANDLE_EXCEPTION(); @@ -22457,7 +22458,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, NULL, ZEND_PRE_INC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -22527,7 +22528,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, NULL, ZEND_PRE_DEC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -22597,7 +22598,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, EX_VAR(opline->result.var), ZEND_POST_INC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -22645,7 +22646,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, EX_VAR(opline->result.var), ZEND_POST_DEC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -22987,7 +22988,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FE_RESET_R_SP zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { - bool is_empty = zend_fe_reset_iterator(array_ptr, 0 OPLINE_CC EXECUTE_DATA_CC); + bool is_empty = zend_fe_reset_iterator(array_ptr, 0, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); if (UNEXPECTED(EG(exception))) { @@ -23087,7 +23088,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FE_RESET_RW_S zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { - bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC); + bool is_empty = zend_fe_reset_iterator(array_ptr, 1, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); if (UNEXPECTED(EG(exception))) { HANDLE_EXCEPTION(); @@ -23648,7 +23649,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -23678,7 +23679,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP ref = Z_REF_P(zptr); zptr = Z_REFVAL_P(zptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } @@ -23686,9 +23687,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); if (prop_info) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, zptr, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(zptr, zptr, value OPLINE_CC); + zend_binary_op(zptr, zptr, value, opline->extended_value); } } while (0); @@ -23697,7 +23698,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP } } } else { - zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_op_overloaded_property(zobj, name, cache_slot, value, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); } if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -23752,11 +23753,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -23778,7 +23779,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_obj_dim(obj, dim SLIM_OPLINE_CC EXECUTE_DATA_CC); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { uint8_t old_type; @@ -23799,7 +23800,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP goto assign_dim_op_new_array; } else { dim = RT_CONSTANT(opline, opline->op2); - zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_dim_slow(container, dim, IS_CONST EXECUTE_DATA_CC); assign_dim_op_ret_null: FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -23827,11 +23828,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OP_SPE zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -23868,7 +23869,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_OBJ_S && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -23892,10 +23893,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_OBJ_S } } else { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); - zend_pre_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -23932,7 +23933,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_OBJ_ && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -23954,10 +23955,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_OBJ_ ZVAL_NULL(EX_VAR(opline->result.var)); } else { prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); - zend_post_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -23975,7 +23976,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_W_S SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_W(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -23990,7 +23991,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_RW_ SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_RW(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_RW(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -24024,7 +24025,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_UNS SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_UNSET(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_UNSET(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -24045,7 +24046,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_W_S zend_fetch_property_address( result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL), - BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC); + BP_VAR_W, opline->extended_value, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -24062,7 +24063,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_RW_ container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); property = RT_CONSTANT(opline, opline->op2); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -24096,7 +24097,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_UNS container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); property = RT_CONSTANT(opline, opline->op2); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -24118,9 +24119,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_LIST_W_ && UNEXPECTED(!Z_ISREF_P(container)) ) { zend_error(E_NOTICE, "Attempting to set reference to non referenceable value"); - zend_fetch_dimension_address_LIST_r(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, dim, IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); } else { - zend_fetch_dimension_address_W(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, dim, IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); } ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -24143,7 +24144,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -24297,7 +24298,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -24451,7 +24452,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -24605,7 +24606,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -24838,7 +24839,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -24851,7 +24852,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = RT_CONSTANT(opline, opline->op2); value = RT_CONSTANT((opline+1), (opline+1)->op1); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -24990,7 +24991,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -25004,7 +25005,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = RT_CONSTANT(opline, opline->op2); value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -25143,7 +25144,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -25157,7 +25158,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = RT_CONSTANT(opline, opline->op2); value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -25296,7 +25297,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -25309,7 +25310,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = RT_CONSTANT(opline, opline->op2); value = EX_VAR((opline+1)->op1.var); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -25425,19 +25426,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_RE if (1) { if (IS_VAR == IS_UNUSED) { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_VAR, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_VAR, property, IS_CONST, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -25462,19 +25463,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_RE if (1) { if (IS_VAR == IS_UNUSED) { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_VAR, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_VAR, property, IS_CONST, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -26649,7 +26650,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -26679,7 +26680,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP ref = Z_REF_P(zptr); zptr = Z_REFVAL_P(zptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } @@ -26687,9 +26688,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); if (prop_info) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, zptr, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(zptr, zptr, value OPLINE_CC); + zend_binary_op(zptr, zptr, value, opline->extended_value); } } while (0); @@ -26698,7 +26699,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP } } } else { - zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_op_overloaded_property(zobj, name, cache_slot, value, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); } if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -26753,11 +26754,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -26779,7 +26780,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_obj_dim(obj, dim SLIM_OPLINE_CC EXECUTE_DATA_CC); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { uint8_t old_type; @@ -26800,7 +26801,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP goto assign_dim_op_new_array; } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); - zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_dim_slow(container, dim, (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC); assign_dim_op_ret_null: FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -26829,11 +26830,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OP_SPE zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -26871,7 +26872,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_OBJ_S && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -26895,10 +26896,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_OBJ_S } } else { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); - zend_pre_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -26936,7 +26937,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_OBJ_ && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -26958,10 +26959,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_OBJ_ ZVAL_NULL(EX_VAR(opline->result.var)); } else { prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); - zend_post_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -26980,7 +26981,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_W_S SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_W(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -26995,7 +26996,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_RW_ SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_RW(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_RW(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -27029,7 +27030,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_UNS SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_UNSET(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_UNSET(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -27050,7 +27051,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_W_S zend_fetch_property_address( result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL), - BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC); + BP_VAR_W, opline->extended_value, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -27067,7 +27068,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_RW_ container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); property = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -27101,7 +27102,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_UNS container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); property = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -27123,9 +27124,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_LIST_W_ && UNEXPECTED(!Z_ISREF_P(container)) ) { zend_error(E_NOTICE, "Attempting to set reference to non referenceable value"); - zend_fetch_dimension_address_LIST_r(container, dim, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, dim, (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); } else { - zend_fetch_dimension_address_W(container, dim, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, dim, (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); @@ -27149,7 +27150,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -27303,7 +27304,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -27457,7 +27458,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -27611,7 +27612,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -27844,7 +27845,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -27857,7 +27858,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); value = RT_CONSTANT((opline+1), (opline+1)->op1); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -27996,7 +27997,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -28010,7 +28011,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -28149,7 +28150,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -28163,7 +28164,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -28302,7 +28303,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -28315,7 +28316,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); value = EX_VAR((opline+1)->op1.var); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -28373,19 +28374,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_RE if (1) { if (IS_VAR == IS_UNUSED) { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -28410,19 +28411,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_RE if (1) { if (IS_VAR == IS_UNUSED) { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -29166,7 +29167,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_REF_SP UNEXPECTED(!Z_ISREF_P(value_ptr))) { variable_ptr = zend_wrong_assign_to_variable_reference( - variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC); + variable_ptr, value_ptr, &garbage EXECUTE_DATA_CC); } else { zend_assign_to_variable_reference(variable_ptr, value_ptr, &garbage); } @@ -29224,11 +29225,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -29250,7 +29251,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_obj_dim(obj, dim SLIM_OPLINE_CC EXECUTE_DATA_CC); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { uint8_t old_type; @@ -29271,7 +29272,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP goto assign_dim_op_new_array; } else { dim = NULL; - zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_dim_slow(container, dim, IS_UNUSED EXECUTE_DATA_CC); assign_dim_op_ret_null: FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -29291,7 +29292,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_W_S SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_W(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, NULL, IS_UNUSED, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -29306,7 +29307,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_RW_ SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_RW(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_RW(container, NULL, IS_UNUSED, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -29429,7 +29430,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -29442,7 +29443,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = NULL; value = RT_CONSTANT((opline+1), (opline+1)->op1); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -29581,7 +29582,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -29595,7 +29596,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = NULL; value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -29734,7 +29735,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -29748,7 +29749,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = NULL; value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -29887,7 +29888,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -29900,7 +29901,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = NULL; value = EX_VAR((opline+1)->op1.var); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -31008,7 +31009,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -31038,7 +31039,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP ref = Z_REF_P(zptr); zptr = Z_REFVAL_P(zptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } @@ -31046,9 +31047,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); if (prop_info) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, zptr, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(zptr, zptr, value OPLINE_CC); + zend_binary_op(zptr, zptr, value, opline->extended_value); } } while (0); @@ -31057,7 +31058,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP } } } else { - zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_op_overloaded_property(zobj, name, cache_slot, value, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); } if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -31112,11 +31113,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -31138,7 +31139,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_obj_dim(obj, dim SLIM_OPLINE_CC EXECUTE_DATA_CC); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { uint8_t old_type; @@ -31159,7 +31160,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP goto assign_dim_op_new_array; } else { dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); - zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_dim_slow(container, dim, IS_CV EXECUTE_DATA_CC); assign_dim_op_ret_null: FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -31187,11 +31188,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OP_SPE zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -31228,7 +31229,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_OBJ_S && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -31252,10 +31253,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_OBJ_S } } else { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); - zend_pre_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -31292,7 +31293,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_OBJ_ && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -31314,10 +31315,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_OBJ_ ZVAL_NULL(EX_VAR(opline->result.var)); } else { prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); - zend_post_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -31335,7 +31336,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_W_S SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_W(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -31350,7 +31351,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_RW_ SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_RW(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_RW(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -31384,7 +31385,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_UNS SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_UNSET(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_UNSET(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -31405,7 +31406,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_W_S zend_fetch_property_address( result, container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL), - BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC); + BP_VAR_W, opline->extended_value, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -31422,7 +31423,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_RW_ container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -31456,7 +31457,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_UNS container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -31478,9 +31479,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_LIST_W_ && UNEXPECTED(!Z_ISREF_P(container)) ) { zend_error(E_NOTICE, "Attempting to set reference to non referenceable value"); - zend_fetch_dimension_address_LIST_r(container, dim, IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, dim, IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); } else { - zend_fetch_dimension_address_W(container, dim, IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, dim, IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); } ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -31503,7 +31504,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -31657,7 +31658,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -31811,7 +31812,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -31965,7 +31966,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -32198,7 +32199,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -32211,7 +32212,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = EX_VAR(opline->op2.var); value = RT_CONSTANT((opline+1), (opline+1)->op1); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -32350,7 +32351,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -32364,7 +32365,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = EX_VAR(opline->op2.var); value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -32503,7 +32504,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -32517,7 +32518,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = EX_VAR(opline->op2.var); value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -32656,7 +32657,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -32669,7 +32670,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = EX_VAR(opline->op2.var); value = EX_VAR((opline+1)->op1.var); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -32791,7 +32792,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_REF_SP UNEXPECTED(!Z_ISREF_P(value_ptr))) { variable_ptr = zend_wrong_assign_to_variable_reference( - variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC); + variable_ptr, value_ptr, &garbage EXECUTE_DATA_CC); } else { zend_assign_to_variable_reference(variable_ptr, value_ptr, &garbage); } @@ -32823,19 +32824,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_RE if (1) { if (IS_VAR == IS_UNUSED) { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_VAR, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_VAR, property, IS_CV, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -32860,19 +32861,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_RE if (1) { if (IS_VAR == IS_UNUSED) { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_VAR, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_VAR, property, IS_CV, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -33679,7 +33680,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -33709,7 +33710,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP ref = Z_REF_P(zptr); zptr = Z_REFVAL_P(zptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } @@ -33717,9 +33718,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); if (prop_info) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, zptr, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(zptr, zptr, value OPLINE_CC); + zend_binary_op(zptr, zptr, value, opline->extended_value); } } while (0); @@ -33728,7 +33729,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP } } } else { - zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_op_overloaded_property(zobj, name, cache_slot, value, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); } if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -33769,7 +33770,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_OBJ_S && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -33793,10 +33794,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_OBJ_S } } else { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); - zend_pre_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -33833,7 +33834,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_OBJ_ && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -33855,10 +33856,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_OBJ_ ZVAL_NULL(EX_VAR(opline->result.var)); } else { prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); - zend_post_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -34055,7 +34056,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_W_S zend_fetch_property_address( result, container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL), - BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC); + BP_VAR_W, opline->extended_value, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_UNUSED == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -34072,7 +34073,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_RW_ container = &EX(This); property = RT_CONSTANT(opline, opline->op2); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_UNUSED == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -34227,7 +34228,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_UNS container = &EX(This); property = RT_CONSTANT(opline, opline->op2); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_UNUSED == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -34252,7 +34253,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -34406,7 +34407,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -34560,7 +34561,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -34714,7 +34715,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -34866,19 +34867,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_RE if (1) { if (IS_UNUSED == IS_UNUSED) { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CONST, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } @@ -34902,19 +34903,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_RE if (1) { if (IS_UNUSED == IS_UNUSED) { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CONST, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } @@ -35332,7 +35333,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_F } SAVE_OPLINE(); - zend_quick_get_constant(RT_CONSTANT(opline, opline->op2) + 1, opline->op1.num OPLINE_CC EXECUTE_DATA_CC); + zend_quick_get_constant(RT_CONSTANT(opline, opline->op2) + 1, opline->op1.num, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -35865,7 +35866,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -35895,7 +35896,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP ref = Z_REF_P(zptr); zptr = Z_REFVAL_P(zptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } @@ -35903,9 +35904,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); if (prop_info) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, zptr, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(zptr, zptr, value OPLINE_CC); + zend_binary_op(zptr, zptr, value, opline->extended_value); } } while (0); @@ -35914,7 +35915,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP } } } else { - zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_op_overloaded_property(zobj, name, cache_slot, value, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); } if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -35955,7 +35956,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_OBJ_S && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -35979,10 +35980,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_OBJ_S } } else { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); - zend_pre_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -36020,7 +36021,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_OBJ_ && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -36042,10 +36043,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_OBJ_ ZVAL_NULL(EX_VAR(opline->result.var)); } else { prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); - zend_post_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -36238,7 +36239,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_W_S zend_fetch_property_address( result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL), - BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC); + BP_VAR_W, opline->extended_value, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_UNUSED == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -36255,7 +36256,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_RW_ container = &EX(This); property = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_UNUSED == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -36410,7 +36411,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_UNS container = &EX(This); property = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_UNUSED == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -36435,7 +36436,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -36589,7 +36590,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -36743,7 +36744,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -36897,7 +36898,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -37049,19 +37050,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_RE if (1) { if (IS_UNUSED == IS_UNUSED) { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); @@ -37085,19 +37086,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_RE if (1) { if (IS_UNUSED == IS_UNUSED) { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); @@ -38514,7 +38515,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -38544,7 +38545,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP ref = Z_REF_P(zptr); zptr = Z_REFVAL_P(zptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } @@ -38552,9 +38553,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); if (prop_info) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, zptr, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(zptr, zptr, value OPLINE_CC); + zend_binary_op(zptr, zptr, value, opline->extended_value); } } while (0); @@ -38563,7 +38564,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP } } } else { - zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_op_overloaded_property(zobj, name, cache_slot, value, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); } if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -38604,7 +38605,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_OBJ_S && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -38628,10 +38629,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_OBJ_S } } else { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); - zend_pre_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -38668,7 +38669,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_OBJ_ && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -38690,10 +38691,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_OBJ_ ZVAL_NULL(EX_VAR(opline->result.var)); } else { prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); - zend_post_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -38885,7 +38886,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_W_S zend_fetch_property_address( result, container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL), - BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC); + BP_VAR_W, opline->extended_value, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_UNUSED == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -38902,7 +38903,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_RW_ container = &EX(This); property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_UNUSED == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -39057,7 +39058,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_UNS container = &EX(This); property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_UNUSED == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -39082,7 +39083,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -39236,7 +39237,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -39390,7 +39391,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -39544,7 +39545,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -39696,19 +39697,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_RE if (1) { if (IS_UNUSED == IS_UNUSED) { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CV, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } @@ -39732,19 +39733,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_RE if (1) { if (IS_UNUSED == IS_UNUSED) { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CV, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } @@ -40397,7 +40398,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, NULL, ZEND_PRE_INC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -40466,7 +40467,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, NULL, ZEND_PRE_DEC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -40535,7 +40536,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, EX_VAR(opline->result.var), ZEND_POST_INC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -40582,7 +40583,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, EX_VAR(opline->result.var), ZEND_POST_DEC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -41294,7 +41295,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FE_RESET_R_SP ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { - bool is_empty = zend_fe_reset_iterator(array_ptr, 0 OPLINE_CC EXECUTE_DATA_CC); + bool is_empty = zend_fe_reset_iterator(array_ptr, 0, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(EG(exception))) { HANDLE_EXCEPTION(); @@ -41392,7 +41393,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FE_RESET_RW_S ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { - bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC); + bool is_empty = zend_fe_reset_iterator(array_ptr, 1, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(EG(exception))) { HANDLE_EXCEPTION(); @@ -42626,7 +42627,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -42656,7 +42657,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP ref = Z_REF_P(zptr); zptr = Z_REFVAL_P(zptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } @@ -42664,9 +42665,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); if (prop_info) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, zptr, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(zptr, zptr, value OPLINE_CC); + zend_binary_op(zptr, zptr, value, opline->extended_value); } } while (0); @@ -42675,7 +42676,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP } } } else { - zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_op_overloaded_property(zobj, name, cache_slot, value, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); } if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -42730,11 +42731,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -42756,7 +42757,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_obj_dim(obj, dim SLIM_OPLINE_CC EXECUTE_DATA_CC); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { uint8_t old_type; @@ -42777,7 +42778,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP goto assign_dim_op_new_array; } else { dim = RT_CONSTANT(opline, opline->op2); - zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_dim_slow(container, dim, IS_CONST EXECUTE_DATA_CC); assign_dim_op_ret_null: FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -42805,11 +42806,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OP_SPE zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -42846,7 +42847,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_OBJ_S && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -42870,10 +42871,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_OBJ_S } } else { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); - zend_pre_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -42910,7 +42911,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_OBJ_ && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -42932,10 +42933,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_OBJ_ ZVAL_NULL(EX_VAR(opline->result.var)); } else { prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); - zend_post_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -42971,10 +42972,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_R_S if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else { - zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); } @@ -42988,7 +42989,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_W_S SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_W(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -43003,7 +43004,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_RW_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_RW(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_RW(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -43018,7 +43019,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_IS_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -43050,7 +43051,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_UNS SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_UNSET(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_UNSET(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -43244,7 +43245,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_W_S zend_fetch_property_address( result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL), - BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC); + BP_VAR_W, opline->extended_value, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -43261,7 +43262,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_RW_ container = EX_VAR(opline->op1.var); property = RT_CONSTANT(opline, opline->op2); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -43416,7 +43417,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_UNS container = EX_VAR(opline->op1.var); property = RT_CONSTANT(opline, opline->op2); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -43441,7 +43442,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -43595,7 +43596,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -43749,7 +43750,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -43903,7 +43904,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -44136,7 +44137,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -44149,7 +44150,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = RT_CONSTANT(opline, opline->op2); value = RT_CONSTANT((opline+1), (opline+1)->op1); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -44288,7 +44289,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -44302,7 +44303,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = RT_CONSTANT(opline, opline->op2); value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -44441,7 +44442,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -44455,7 +44456,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = RT_CONSTANT(opline, opline->op2); value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -44594,7 +44595,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -44607,7 +44608,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = RT_CONSTANT(opline, opline->op2); value = EX_VAR((opline+1)->op1.var); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -44723,19 +44724,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_RE if (1) { if (IS_CV == IS_UNUSED) { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_CV, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_CV, property, IS_CONST, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } @@ -44759,19 +44760,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_RE if (1) { if (IS_CV == IS_UNUSED) { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_CV, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_CV, property, IS_CONST, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } @@ -45599,7 +45600,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ARRAY_KEY_EXI if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) { array_key_exists_array: ht = Z_ARRVAL_P(subject); - result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC); + result = zend_array_key_exists_fast(ht, key EXECUTE_DATA_CC); } else { if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) { subject = Z_REFVAL_P(subject); @@ -45607,7 +45608,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ARRAY_KEY_EXI goto array_key_exists_array; } } - zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC); + zend_array_key_exists_error(subject, key SLIM_OPLINE_CC EXECUTE_DATA_CC); result = 0; } @@ -45975,7 +45976,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_F offset = Z_LVAL_P(dim); } else { SAVE_OPLINE(); - zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -46002,7 +46003,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_F if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -46030,7 +46031,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_F offset = Z_LVAL_P(dim); } else { SAVE_OPLINE(); - zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR|IS_CV) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR|IS_CV), RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -46057,7 +46058,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_F if ((IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -46580,7 +46581,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -46610,7 +46611,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP ref = Z_REF_P(zptr); zptr = Z_REFVAL_P(zptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } @@ -46618,9 +46619,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); if (prop_info) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, zptr, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(zptr, zptr, value OPLINE_CC); + zend_binary_op(zptr, zptr, value, opline->extended_value); } } while (0); @@ -46629,7 +46630,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP } } } else { - zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_op_overloaded_property(zobj, name, cache_slot, value, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); } if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -46684,11 +46685,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -46710,7 +46711,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_obj_dim(obj, dim SLIM_OPLINE_CC EXECUTE_DATA_CC); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { uint8_t old_type; @@ -46731,7 +46732,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP goto assign_dim_op_new_array; } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); - zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_dim_slow(container, dim, (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC); assign_dim_op_ret_null: FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -46760,11 +46761,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OP_SPE zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -46802,7 +46803,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_OBJ_S && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -46826,10 +46827,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_OBJ_S } } else { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); - zend_pre_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -46867,7 +46868,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_OBJ_ && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -46889,10 +46890,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_OBJ_ ZVAL_NULL(EX_VAR(opline->result.var)); } else { prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); - zend_post_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -46929,10 +46930,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_R_S if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else { - zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); @@ -46946,7 +46947,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_W_S SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_W(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -46961,7 +46962,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_RW_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_RW(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_RW(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -46976,7 +46977,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_IS_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_read_IS(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_IS(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -47008,7 +47009,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_UNS SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_UNSET(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_UNSET(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -47197,7 +47198,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_W_S zend_fetch_property_address( result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL), - BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC); + BP_VAR_W, opline->extended_value, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -47214,7 +47215,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_RW_ container = EX_VAR(opline->op1.var); property = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -47369,7 +47370,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_UNS container = EX_VAR(opline->op1.var); property = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -47394,7 +47395,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -47548,7 +47549,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -47702,7 +47703,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -47856,7 +47857,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -48089,7 +48090,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -48102,7 +48103,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); value = RT_CONSTANT((opline+1), (opline+1)->op1); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -48241,7 +48242,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -48255,7 +48256,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -48394,7 +48395,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -48408,7 +48409,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -48547,7 +48548,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -48560,7 +48561,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); value = EX_VAR((opline+1)->op1.var); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -48618,19 +48619,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_RE if (1) { if (IS_CV == IS_UNUSED) { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_CV, property, (IS_TMP_VAR|IS_VAR), value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_CV, property, (IS_TMP_VAR|IS_VAR), value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); @@ -48654,19 +48655,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_RE if (1) { if (IS_CV == IS_UNUSED) { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_CV, property, (IS_TMP_VAR|IS_VAR), value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_CV, property, (IS_TMP_VAR|IS_VAR), value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); @@ -49355,7 +49356,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ARRAY_KEY_EXI if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) { array_key_exists_array: ht = Z_ARRVAL_P(subject); - result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC); + result = zend_array_key_exists_fast(ht, key EXECUTE_DATA_CC); } else { if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) { subject = Z_REFVAL_P(subject); @@ -49363,7 +49364,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ARRAY_KEY_EXI goto array_key_exists_array; } } - zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC); + zend_array_key_exists_error(subject, key SLIM_OPLINE_CC EXECUTE_DATA_CC); result = 0; } @@ -49689,7 +49690,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_REF_SP UNEXPECTED(!Z_ISREF_P(value_ptr))) { variable_ptr = zend_wrong_assign_to_variable_reference( - variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC); + variable_ptr, value_ptr, &garbage EXECUTE_DATA_CC); } else { zend_assign_to_variable_reference(variable_ptr, value_ptr, &garbage); } @@ -49792,11 +49793,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -49818,7 +49819,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_obj_dim(obj, dim SLIM_OPLINE_CC EXECUTE_DATA_CC); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { uint8_t old_type; @@ -49839,7 +49840,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP goto assign_dim_op_new_array; } else { dim = NULL; - zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_dim_slow(container, dim, IS_UNUSED EXECUTE_DATA_CC); assign_dim_op_ret_null: FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -49887,7 +49888,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV_ if (retval == NULL) { if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) { fetch_this: - zend_fetch_this_var(type OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_this_var(type, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); } @@ -49994,7 +49995,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_W_S SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_W(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, NULL, IS_UNUSED, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -50009,7 +50010,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_RW_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_RW(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_RW(container, NULL, IS_UNUSED, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -50132,7 +50133,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -50145,7 +50146,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = NULL; value = RT_CONSTANT((opline+1), (opline+1)->op1); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -50284,7 +50285,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -50298,7 +50299,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = NULL; value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -50437,7 +50438,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -50451,7 +50452,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = NULL; value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -50590,7 +50591,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -50603,7 +50604,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = NULL; value = EX_VAR((opline+1)->op1.var); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -52084,7 +52085,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -52114,7 +52115,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP ref = Z_REF_P(zptr); zptr = Z_REFVAL_P(zptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } @@ -52122,9 +52123,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); if (prop_info) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, zptr, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(zptr, zptr, value OPLINE_CC); + zend_binary_op(zptr, zptr, value, opline->extended_value); } } while (0); @@ -52133,7 +52134,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_OP } } } else { - zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_op_overloaded_property(zobj, name, cache_slot, value, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); } if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -52188,11 +52189,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -52214,7 +52215,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_obj_dim(obj, dim SLIM_OPLINE_CC EXECUTE_DATA_CC); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { uint8_t old_type; @@ -52235,7 +52236,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_OP goto assign_dim_op_new_array; } else { dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); - zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_dim_slow(container, dim, IS_CV EXECUTE_DATA_CC); assign_dim_op_ret_null: FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -52263,11 +52264,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OP_SPE zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -52304,7 +52305,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_OBJ_S && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -52328,10 +52329,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_PRE_INC_OBJ_S } } else { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); - zend_pre_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -52368,7 +52369,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_OBJ_ && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -52390,10 +52391,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_POST_INC_OBJ_ ZVAL_NULL(EX_VAR(opline->result.var)); } else { prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); - zend_post_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -52429,10 +52430,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_R_S if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else { - zend_fetch_dimension_address_read_R(container, dim, IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); } @@ -52446,7 +52447,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_W_S SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_W(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -52461,7 +52462,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_RW_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_RW(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_RW(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -52476,7 +52477,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_IS_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_read_IS(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_IS(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -52508,7 +52509,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_DIM_UNS SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_UNSET(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_UNSET(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -52697,7 +52698,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_W_S zend_fetch_property_address( result, container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL), - BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC); + BP_VAR_W, opline->extended_value, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -52714,7 +52715,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_RW_ container = EX_VAR(opline->op1.var); property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -52869,7 +52870,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_OBJ_UNS container = EX_VAR(opline->op1.var); property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -52894,7 +52895,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -53048,7 +53049,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -53202,7 +53203,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -53356,7 +53357,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_SP object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -53589,7 +53590,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -53602,7 +53603,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = EX_VAR(opline->op2.var); value = RT_CONSTANT((opline+1), (opline+1)->op1); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -53741,7 +53742,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -53755,7 +53756,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = EX_VAR(opline->op2.var); value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -53894,7 +53895,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -53908,7 +53909,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = EX_VAR(opline->op2.var); value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -54047,7 +54048,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -54060,7 +54061,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_DIM_SP } else { dim = EX_VAR(opline->op2.var); value = EX_VAR((opline+1)->op1.var); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -54182,7 +54183,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_REF_SP UNEXPECTED(!Z_ISREF_P(value_ptr))) { variable_ptr = zend_wrong_assign_to_variable_reference( - variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC); + variable_ptr, value_ptr, &garbage EXECUTE_DATA_CC); } else { zend_assign_to_variable_reference(variable_ptr, value_ptr, &garbage); } @@ -54214,19 +54215,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_RE if (1) { if (IS_CV == IS_UNUSED) { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_CV, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_CV, property, IS_CV, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } @@ -54250,19 +54251,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ASSIGN_OBJ_RE if (1) { if (IS_CV == IS_UNUSED) { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_CV, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_CV, property, IS_CV, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } @@ -54949,7 +54950,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ARRAY_KEY_EXI if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) { array_key_exists_array: ht = Z_ARRVAL_P(subject); - result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC); + result = zend_array_key_exists_fast(ht, key EXECUTE_DATA_CC); } else { if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) { subject = Z_REFVAL_P(subject); @@ -54957,7 +54958,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ARRAY_KEY_EXI goto array_key_exists_array; } } - zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC); + zend_array_key_exists_error(subject, key SLIM_OPLINE_CC EXECUTE_DATA_CC); result = 0; } @@ -55220,7 +55221,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_STATIC_PROP SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, (opline+1)->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC); + // Consider fetching wide op from zend_fetch_static_property_address() instead + prop = zend_fetch_static_property_address(&prop_info, (opline+1)->extended_value, BP_VAR_RW, 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { UNDEF_RESULT(); FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); @@ -55242,16 +55244,16 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_STATIC_PROP ref = Z_REF_P(prop); prop = Z_REFVAL_P(prop); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } if (ZEND_TYPE_IS_SET(prop_info->type)) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, prop, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, prop, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(prop, prop, value OPLINE_CC); + zend_binary_op(prop, prop, value, opline->extended_value); } } while (0); @@ -55272,7 +55274,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_STATIC_PRO SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC); + prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_RW, 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { UNDEF_RESULT(); HANDLE_EXCEPTION(); @@ -55286,7 +55288,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_STATIC_PRO } zend_pre_incdec_property_zval(prop, - ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL OPLINE_CC EXECUTE_DATA_CC); + ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -55300,7 +55302,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_STATIC_PR SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC); + prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_RW, 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { UNDEF_RESULT(); HANDLE_EXCEPTION(); @@ -55314,7 +55316,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_STATIC_PR } zend_post_incdec_property_zval(prop, - ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL OPLINE_CC EXECUTE_DATA_CC); + ZEND_TYPE_IS_SET(prop_info->type) ? prop_info : NULL, ZEND_POST_INC_STATIC_PROP, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -55393,7 +55395,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_STATIC_PROP SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC); + prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { UNDEF_RESULT(); @@ -55430,7 +55432,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_STATIC_PROP SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC); + prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -55467,7 +55469,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_STATIC_PROP SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC); + prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -55504,7 +55506,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_STATIC_PROP SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC); + prop = zend_fetch_static_property_address(&prop_info, opline->extended_value, BP_VAR_W, 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { UNDEF_RESULT(); @@ -55541,7 +55543,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_STATIC_PROP SAVE_OPLINE(); - prop = zend_fetch_static_property_address(&prop_info, opline->extended_value & ~ZEND_RETURNS_FUNCTION, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC); + prop = zend_fetch_static_property_address(&prop_info, opline->extended_value & ~ZEND_RETURNS_FUNCTION, BP_VAR_W, 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); UNDEF_RESULT(); @@ -55559,7 +55561,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_STATIC_PROP value_ptr = get_zval_ptr_ptr((opline+1)->op1_type, (opline+1)->op1, BP_VAR_W); if ((opline+1)->op1_type == IS_VAR && (opline->extended_value & ZEND_RETURNS_FUNCTION) && UNEXPECTED(!Z_ISREF_P(value_ptr))) { - if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(prop, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC))) { + if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(prop, value_ptr, &garbage EXECUTE_DATA_CC))) { prop = &EG(uninitialized_zval); } } else if (ZEND_TYPE_IS_SET(prop_info->type)) { @@ -57489,7 +57491,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ISSET_ISEMPTY_STAT SAVE_OPLINE(); - value = zend_fetch_static_property_address(NULL, opline->extended_value & ~ZEND_ISEMPTY, BP_VAR_IS, 0 OPLINE_CC EXECUTE_DATA_CC); + value = zend_fetch_static_property_address(NULL, opline->extended_value & ~ZEND_ISEMPTY, BP_VAR_IS, 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (!(opline->extended_value & ZEND_ISEMPTY)) { result = value != NULL && Z_TYPE_P(value) > IS_NULL && @@ -59804,7 +59806,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FE_RESET_R_SPEC_CO ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { - bool is_empty = zend_fe_reset_iterator(array_ptr, 0 OPLINE_CC EXECUTE_DATA_CC); + bool is_empty = zend_fe_reset_iterator(array_ptr, 0, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(EG(exception))) { HANDLE_EXCEPTION(); @@ -59902,7 +59904,7 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FE_RE ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { - bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC); + bool is_empty = zend_fe_reset_iterator(array_ptr, 1, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(EG(exception))) { HANDLE_EXCEPTION(); @@ -60339,7 +60341,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_DEFINE ZEND_VM_SMART_BRANCH_FALSE(); } } - if (zend_quick_check_constant(RT_CONSTANT(opline, opline->op1) OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) { + if (zend_quick_check_constant(RT_CONSTANT(opline, opline->op1), RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_DC EXECUTE_DATA_CC) != SUCCESS) { CACHE_PTR(opline->extended_value, ENCODE_SPECIAL_CACHE_NUM(zend_hash_num_elements(EG(zend_constants)))); goto defined_false; } else { @@ -60981,10 +60983,10 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else { - zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); } @@ -60998,7 +61000,7 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH SAVE_OPLINE(); container = RT_CONSTANT(opline, opline->op1); - zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -61336,7 +61338,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_LIST_R_SPEC_ SAVE_OPLINE(); container = RT_CONSTANT(opline, opline->op1); - zend_fetch_dimension_address_LIST_r(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -62285,7 +62287,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ARRAY_KEY_EXISTS_S if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) { array_key_exists_array: ht = Z_ARRVAL_P(subject); - result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC); + result = zend_array_key_exists_fast(ht, key EXECUTE_DATA_CC); } else { if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) { subject = Z_REFVAL_P(subject); @@ -62293,7 +62295,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ARRAY_KEY_EXISTS_S goto array_key_exists_array; } } - zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC); + zend_array_key_exists_error(subject, key SLIM_OPLINE_CC EXECUTE_DATA_CC); result = 0; } @@ -63427,7 +63429,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_ offset = Z_LVAL_P(dim); } else { SAVE_OPLINE(); - zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR|IS_CV) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR|IS_CV), RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -63454,7 +63456,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_ if ((IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -63611,10 +63613,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_R_SPEC_C if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else { - zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); @@ -63628,7 +63630,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_IS_SPEC_ SAVE_OPLINE(); container = RT_CONSTANT(opline, opline->op1); - zend_fetch_dimension_address_read_IS(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_IS(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -63966,7 +63968,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_LIST_R_SPEC_ SAVE_OPLINE(); container = RT_CONSTANT(opline, opline->op1); - zend_fetch_dimension_address_LIST_r(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -64719,7 +64721,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ARRAY_KEY_EXISTS_S if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) { array_key_exists_array: ht = Z_ARRVAL_P(subject); - result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC); + result = zend_array_key_exists_fast(ht, key EXECUTE_DATA_CC); } else { if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) { subject = Z_REFVAL_P(subject); @@ -64727,7 +64729,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ARRAY_KEY_EXISTS_S goto array_key_exists_array; } } - zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC); + zend_array_key_exists_error(subject, key SLIM_OPLINE_CC EXECUTE_DATA_CC); result = 0; } @@ -66004,10 +66006,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_R_SPEC_C if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else { - zend_fetch_dimension_address_read_R(container, dim, IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); } @@ -66021,7 +66023,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_IS_SPEC_ SAVE_OPLINE(); container = RT_CONSTANT(opline, opline->op1); - zend_fetch_dimension_address_read_IS(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_IS(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -66359,7 +66361,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_LIST_R_SPEC_ SAVE_OPLINE(); container = RT_CONSTANT(opline, opline->op1); - zend_fetch_dimension_address_LIST_r(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -67111,7 +67113,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ARRAY_KEY_EXISTS_S if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) { array_key_exists_array: ht = Z_ARRVAL_P(subject); - result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC); + result = zend_array_key_exists_fast(ht, key EXECUTE_DATA_CC); } else { if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) { subject = Z_REFVAL_P(subject); @@ -67119,7 +67121,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ARRAY_KEY_EXISTS_S goto array_key_exists_array; } } - zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC); + zend_array_key_exists_error(subject, key SLIM_OPLINE_CC EXECUTE_DATA_CC); result = 0; } @@ -67805,7 +67807,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_LIST_R_SPEC_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_LIST_r(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -69301,7 +69303,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_LIST_R_SPEC_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_LIST_r(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -69324,7 +69326,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_LIST_R_SPEC_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_LIST_r(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -70535,10 +70537,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_R_SPEC_T if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else { - zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -70552,7 +70554,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_IS_SPEC_ SAVE_OPLINE(); container = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -71351,7 +71353,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ARRAY_KEY_EXISTS_S if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) { array_key_exists_array: ht = Z_ARRVAL_P(subject); - result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC); + result = zend_array_key_exists_fast(ht, key EXECUTE_DATA_CC); } else { if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) { subject = Z_REFVAL_P(subject); @@ -71359,7 +71361,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ARRAY_KEY_EXISTS_S goto array_key_exists_array; } } - zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC); + zend_array_key_exists_error(subject, key SLIM_OPLINE_CC EXECUTE_DATA_CC); result = 0; } @@ -71427,7 +71429,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_ offset = Z_LVAL_P(dim); } else { SAVE_OPLINE(); - zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -71454,7 +71456,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_ if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -71482,7 +71484,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_ offset = Z_LVAL_P(dim); } else { SAVE_OPLINE(); - zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR|IS_CV) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR|IS_CV), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -71509,7 +71511,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_ if ((IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -72028,10 +72030,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_R_SPEC_T if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else { - zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -72045,7 +72047,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_IS_SPEC_ SAVE_OPLINE(); container = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_read_IS(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_IS(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -72816,7 +72818,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ARRAY_KEY_EXISTS_S if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) { array_key_exists_array: ht = Z_ARRVAL_P(subject); - result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC); + result = zend_array_key_exists_fast(ht, key EXECUTE_DATA_CC); } else { if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) { subject = Z_REFVAL_P(subject); @@ -72824,7 +72826,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ARRAY_KEY_EXISTS_S goto array_key_exists_array; } } - zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC); + zend_array_key_exists_error(subject, key SLIM_OPLINE_CC EXECUTE_DATA_CC); result = 0; } @@ -73335,10 +73337,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_R_SPEC_T if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else { - zend_fetch_dimension_address_read_R(container, dim, IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -73352,7 +73354,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_IS_SPEC_ SAVE_OPLINE(); container = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_read_IS(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_IS(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -74123,7 +74125,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ARRAY_KEY_EXISTS_S if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) { array_key_exists_array: ht = Z_ARRVAL_P(subject); - result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC); + result = zend_array_key_exists_fast(ht, key EXECUTE_DATA_CC); } else { if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) { subject = Z_REFVAL_P(subject); @@ -74131,7 +74133,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ARRAY_KEY_EXISTS_S goto array_key_exists_array; } } - zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC); + zend_array_key_exists_error(subject, key SLIM_OPLINE_CC EXECUTE_DATA_CC); result = 0; } @@ -74450,7 +74452,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FE_RESET_R_SPEC_TM ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { - bool is_empty = zend_fe_reset_iterator(array_ptr, 0 OPLINE_CC EXECUTE_DATA_CC); + bool is_empty = zend_fe_reset_iterator(array_ptr, 0, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); if (UNEXPECTED(EG(exception))) { @@ -74549,7 +74551,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FE_RESET_RW_SPEC_T ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { - bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC); + bool is_empty = zend_fe_reset_iterator(array_ptr, 1, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); if (UNEXPECTED(EG(exception))) { HANDLE_EXCEPTION(); @@ -76548,7 +76550,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV zend zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, NULL, ZEND_PRE_INC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -76618,7 +76620,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV zend var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, NULL, ZEND_PRE_DEC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -76688,7 +76690,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV zend var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, EX_VAR(opline->result.var), ZEND_POST_INC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -76736,7 +76738,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV zend var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, EX_VAR(opline->result.var), ZEND_POST_DEC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -77078,7 +77080,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FE_RESET_R_SPEC_VA zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { - bool is_empty = zend_fe_reset_iterator(array_ptr, 0 OPLINE_CC EXECUTE_DATA_CC); + bool is_empty = zend_fe_reset_iterator(array_ptr, 0, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); if (UNEXPECTED(EG(exception))) { @@ -77178,7 +77180,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FE_RESET_RW_SPEC_V zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { - bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC); + bool is_empty = zend_fe_reset_iterator(array_ptr, 1, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); if (UNEXPECTED(EG(exception))) { HANDLE_EXCEPTION(); @@ -77739,7 +77741,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -77769,7 +77771,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC ref = Z_REF_P(zptr); zptr = Z_REFVAL_P(zptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } @@ -77777,9 +77779,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); if (prop_info) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, zptr, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(zptr, zptr, value OPLINE_CC); + zend_binary_op(zptr, zptr, value, opline->extended_value); } } while (0); @@ -77788,7 +77790,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC } } } else { - zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_op_overloaded_property(zobj, name, cache_slot, value, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); } if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -77843,11 +77845,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -77869,7 +77871,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_obj_dim(obj, dim SLIM_OPLINE_CC EXECUTE_DATA_CC); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { uint8_t old_type; @@ -77890,7 +77892,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC goto assign_dim_op_new_array; } else { dim = RT_CONSTANT(opline, opline->op2); - zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_dim_slow(container, dim, IS_CONST EXECUTE_DATA_CC); assign_dim_op_ret_null: FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -77918,11 +77920,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OP_SPEC_VAR zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -77959,7 +77961,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_OBJ_SPEC_V && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -77983,10 +77985,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_OBJ_SPEC_V } } else { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); - zend_pre_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -78023,7 +78025,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_OBJ_SPEC_ && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -78045,10 +78047,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_OBJ_SPEC_ ZVAL_NULL(EX_VAR(opline->result.var)); } else { prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); - zend_post_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -78066,7 +78068,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_W_SPEC_V SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_W(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -78081,7 +78083,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_RW_SPEC_ SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_RW(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_RW(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -78115,7 +78117,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_UNSET_SP SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_UNSET(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_UNSET(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -78136,7 +78138,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_W_SPEC_V zend_fetch_property_address( result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL), - BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC); + BP_VAR_W, opline->extended_value, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -78153,7 +78155,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_RW_SPEC_ container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); property = RT_CONSTANT(opline, opline->op2); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -78187,7 +78189,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_UNSET_SP container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); property = RT_CONSTANT(opline, opline->op2); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -78209,9 +78211,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_LIST_W_SPEC_ && UNEXPECTED(!Z_ISREF_P(container)) ) { zend_error(E_NOTICE, "Attempting to set reference to non referenceable value"); - zend_fetch_dimension_address_LIST_r(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, dim, IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); } else { - zend_fetch_dimension_address_W(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, dim, IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); } ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -78234,7 +78236,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_VA object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -78388,7 +78390,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_VA object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -78542,7 +78544,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_VA object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -78696,7 +78698,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_VA object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -78929,7 +78931,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -78942,7 +78944,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA } else { dim = RT_CONSTANT(opline, opline->op2); value = RT_CONSTANT((opline+1), (opline+1)->op1); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -79081,7 +79083,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -79095,7 +79097,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA } else { dim = RT_CONSTANT(opline, opline->op2); value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -79234,7 +79236,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -79248,7 +79250,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA } else { dim = RT_CONSTANT(opline, opline->op2); value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -79387,7 +79389,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -79400,7 +79402,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA } else { dim = RT_CONSTANT(opline, opline->op2); value = EX_VAR((opline+1)->op1.var); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -79516,19 +79518,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_REF_SPE if (1) { if (IS_VAR == IS_UNUSED) { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_VAR, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_VAR, property, IS_CONST, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -79553,19 +79555,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_REF_SPE if (1) { if (IS_VAR == IS_UNUSED) { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_VAR, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_VAR, property, IS_CONST, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -80740,7 +80742,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -80770,7 +80772,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC ref = Z_REF_P(zptr); zptr = Z_REFVAL_P(zptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } @@ -80778,9 +80780,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); if (prop_info) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, zptr, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(zptr, zptr, value OPLINE_CC); + zend_binary_op(zptr, zptr, value, opline->extended_value); } } while (0); @@ -80789,7 +80791,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC } } } else { - zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_op_overloaded_property(zobj, name, cache_slot, value, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); } if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -80844,11 +80846,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -80870,7 +80872,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_obj_dim(obj, dim SLIM_OPLINE_CC EXECUTE_DATA_CC); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { uint8_t old_type; @@ -80891,7 +80893,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC goto assign_dim_op_new_array; } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); - zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_dim_slow(container, dim, (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC); assign_dim_op_ret_null: FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -80920,11 +80922,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OP_SPEC_VAR zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -80962,7 +80964,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_OBJ_SPEC_V && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -80986,10 +80988,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_OBJ_SPEC_V } } else { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); - zend_pre_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -81027,7 +81029,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_OBJ_SPEC_ && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -81049,10 +81051,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_OBJ_SPEC_ ZVAL_NULL(EX_VAR(opline->result.var)); } else { prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); - zend_post_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -81071,7 +81073,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_W_SPEC_V SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_W(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -81086,7 +81088,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_RW_SPEC_ SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_RW(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_RW(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -81120,7 +81122,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_UNSET_SP SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_UNSET(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_UNSET(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -81141,7 +81143,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_W_SPEC_V zend_fetch_property_address( result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL), - BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC); + BP_VAR_W, opline->extended_value, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -81158,7 +81160,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_RW_SPEC_ container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); property = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -81192,7 +81194,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_UNSET_SP container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); property = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -81214,9 +81216,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_LIST_W_SPEC_ && UNEXPECTED(!Z_ISREF_P(container)) ) { zend_error(E_NOTICE, "Attempting to set reference to non referenceable value"); - zend_fetch_dimension_address_LIST_r(container, dim, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, dim, (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); } else { - zend_fetch_dimension_address_W(container, dim, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, dim, (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); @@ -81240,7 +81242,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_VA object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -81394,7 +81396,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_VA object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -81548,7 +81550,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_VA object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -81702,7 +81704,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_VA object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -81935,7 +81937,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -81948,7 +81950,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); value = RT_CONSTANT((opline+1), (opline+1)->op1); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -82087,7 +82089,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -82101,7 +82103,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -82240,7 +82242,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -82254,7 +82256,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -82393,7 +82395,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -82406,7 +82408,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); value = EX_VAR((opline+1)->op1.var); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -82464,19 +82466,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_REF_SPE if (1) { if (IS_VAR == IS_UNUSED) { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -82501,19 +82503,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_REF_SPE if (1) { if (IS_VAR == IS_UNUSED) { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -83257,7 +83259,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_REF_SPEC_VA UNEXPECTED(!Z_ISREF_P(value_ptr))) { variable_ptr = zend_wrong_assign_to_variable_reference( - variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC); + variable_ptr, value_ptr, &garbage EXECUTE_DATA_CC); } else { zend_assign_to_variable_reference(variable_ptr, value_ptr, &garbage); } @@ -83315,11 +83317,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -83341,7 +83343,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_obj_dim(obj, dim SLIM_OPLINE_CC EXECUTE_DATA_CC); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { uint8_t old_type; @@ -83362,7 +83364,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC goto assign_dim_op_new_array; } else { dim = NULL; - zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_dim_slow(container, dim, IS_UNUSED EXECUTE_DATA_CC); assign_dim_op_ret_null: FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -83382,7 +83384,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_W_SPEC_V SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_W(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, NULL, IS_UNUSED, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -83397,7 +83399,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_RW_SPEC_ SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_RW(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_RW(container, NULL, IS_UNUSED, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -83520,7 +83522,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -83533,7 +83535,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA } else { dim = NULL; value = RT_CONSTANT((opline+1), (opline+1)->op1); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -83672,7 +83674,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -83686,7 +83688,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA } else { dim = NULL; value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -83825,7 +83827,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -83839,7 +83841,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA } else { dim = NULL; value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -83978,7 +83980,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -83991,7 +83993,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA } else { dim = NULL; value = EX_VAR((opline+1)->op1.var); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -85099,7 +85101,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -85129,7 +85131,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC ref = Z_REF_P(zptr); zptr = Z_REFVAL_P(zptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } @@ -85137,9 +85139,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); if (prop_info) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, zptr, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(zptr, zptr, value OPLINE_CC); + zend_binary_op(zptr, zptr, value, opline->extended_value); } } while (0); @@ -85148,7 +85150,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC } } } else { - zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_op_overloaded_property(zobj, name, cache_slot, value, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); } if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -85203,11 +85205,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -85229,7 +85231,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_obj_dim(obj, dim SLIM_OPLINE_CC EXECUTE_DATA_CC); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { uint8_t old_type; @@ -85250,7 +85252,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC goto assign_dim_op_new_array; } else { dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); - zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_dim_slow(container, dim, IS_CV EXECUTE_DATA_CC); assign_dim_op_ret_null: FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -85278,11 +85280,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OP_SPEC_VAR zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -85319,7 +85321,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_OBJ_SPEC_V && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -85343,10 +85345,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_OBJ_SPEC_V } } else { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); - zend_pre_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -85383,7 +85385,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_OBJ_SPEC_ && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -85405,10 +85407,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_OBJ_SPEC_ ZVAL_NULL(EX_VAR(opline->result.var)); } else { prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); - zend_post_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -85426,7 +85428,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_W_SPEC_V SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_W(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -85441,7 +85443,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_RW_SPEC_ SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_RW(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_RW(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -85475,7 +85477,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_UNSET_SP SAVE_OPLINE(); container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); - zend_fetch_dimension_address_UNSET(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_UNSET(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -85496,7 +85498,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_W_SPEC_V zend_fetch_property_address( result, container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL), - BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC); + BP_VAR_W, opline->extended_value, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -85513,7 +85515,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_RW_SPEC_ container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -85547,7 +85549,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_UNSET_SP container = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_VAR == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -85569,9 +85571,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_LIST_W_SPEC_ && UNEXPECTED(!Z_ISREF_P(container)) ) { zend_error(E_NOTICE, "Attempting to set reference to non referenceable value"); - zend_fetch_dimension_address_LIST_r(container, dim, IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_LIST_r(container, dim, IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); } else { - zend_fetch_dimension_address_W(container, dim, IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, dim, IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); } ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -85594,7 +85596,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_VA object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -85748,7 +85750,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_VA object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -85902,7 +85904,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_VA object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -86056,7 +86058,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_VA object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -86289,7 +86291,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -86302,7 +86304,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA } else { dim = EX_VAR(opline->op2.var); value = RT_CONSTANT((opline+1), (opline+1)->op1); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -86441,7 +86443,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -86455,7 +86457,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA } else { dim = EX_VAR(opline->op2.var); value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -86594,7 +86596,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -86608,7 +86610,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA } else { dim = EX_VAR(opline->op2.var); value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -86747,7 +86749,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -86760,7 +86762,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_VA } else { dim = EX_VAR(opline->op2.var); value = EX_VAR((opline+1)->op1.var); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -86882,7 +86884,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_REF_SPEC_VA UNEXPECTED(!Z_ISREF_P(value_ptr))) { variable_ptr = zend_wrong_assign_to_variable_reference( - variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC); + variable_ptr, value_ptr, &garbage EXECUTE_DATA_CC); } else { zend_assign_to_variable_reference(variable_ptr, value_ptr, &garbage); } @@ -86914,19 +86916,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_REF_SPE if (1) { if (IS_VAR == IS_UNUSED) { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_VAR, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_VAR, property, IS_CV, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -86951,19 +86953,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_REF_SPE if (1) { if (IS_VAR == IS_UNUSED) { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_VAR, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_VAR, property, IS_CV, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -87770,7 +87772,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -87800,7 +87802,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC ref = Z_REF_P(zptr); zptr = Z_REFVAL_P(zptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } @@ -87808,9 +87810,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); if (prop_info) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, zptr, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(zptr, zptr, value OPLINE_CC); + zend_binary_op(zptr, zptr, value, opline->extended_value); } } while (0); @@ -87819,7 +87821,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC } } } else { - zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_op_overloaded_property(zobj, name, cache_slot, value, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); } if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -87860,7 +87862,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_OBJ_SPEC_U && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -87884,10 +87886,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_OBJ_SPEC_U } } else { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); - zend_pre_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -87924,7 +87926,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_OBJ_SPEC_ && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -87946,10 +87948,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_OBJ_SPEC_ ZVAL_NULL(EX_VAR(opline->result.var)); } else { prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); - zend_post_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -88146,7 +88148,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_W_SPEC_U zend_fetch_property_address( result, container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL), - BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC); + BP_VAR_W, opline->extended_value, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_UNUSED == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -88163,7 +88165,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_RW_SPEC_ container = &EX(This); property = RT_CONSTANT(opline, opline->op2); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_UNUSED == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -88318,7 +88320,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_UNSET_SP container = &EX(This); property = RT_CONSTANT(opline, opline->op2); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_UNUSED == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -88343,7 +88345,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_UN object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -88497,7 +88499,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_UN object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -88651,7 +88653,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_UN object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -88805,7 +88807,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_UN object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -88957,19 +88959,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_REF_SPE if (1) { if (IS_UNUSED == IS_UNUSED) { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CONST, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } @@ -88993,19 +88995,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_REF_SPE if (1) { if (IS_UNUSED == IS_UNUSED) { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CONST, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } @@ -89423,7 +89425,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_ } SAVE_OPLINE(); - zend_quick_get_constant(RT_CONSTANT(opline, opline->op2) + 1, opline->op1.num OPLINE_CC EXECUTE_DATA_CC); + zend_quick_get_constant(RT_CONSTANT(opline, opline->op2) + 1, opline->op1.num, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -89956,7 +89958,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -89986,7 +89988,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC ref = Z_REF_P(zptr); zptr = Z_REFVAL_P(zptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } @@ -89994,9 +89996,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); if (prop_info) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, zptr, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(zptr, zptr, value OPLINE_CC); + zend_binary_op(zptr, zptr, value, opline->extended_value); } } while (0); @@ -90005,7 +90007,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC } } } else { - zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_op_overloaded_property(zobj, name, cache_slot, value, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); } if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -90046,7 +90048,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_OBJ_SPEC_U && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -90070,10 +90072,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_OBJ_SPEC_U } } else { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); - zend_pre_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -90111,7 +90113,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_OBJ_SPEC_ && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -90133,10 +90135,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_OBJ_SPEC_ ZVAL_NULL(EX_VAR(opline->result.var)); } else { prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); - zend_post_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -90329,7 +90331,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_W_SPEC_U zend_fetch_property_address( result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL), - BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC); + BP_VAR_W, opline->extended_value, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_UNUSED == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -90346,7 +90348,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_RW_SPEC_ container = &EX(This); property = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_UNUSED == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -90501,7 +90503,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_UNSET_SP container = &EX(This); property = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_UNUSED == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -90526,7 +90528,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_UN object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -90680,7 +90682,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_UN object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -90834,7 +90836,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_UN object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -90988,7 +90990,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_UN object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -91140,19 +91142,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_REF_SPE if (1) { if (IS_UNUSED == IS_UNUSED) { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); @@ -91176,19 +91178,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_REF_SPE if (1) { if (IS_UNUSED == IS_UNUSED) { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); @@ -92605,7 +92607,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -92635,7 +92637,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC ref = Z_REF_P(zptr); zptr = Z_REFVAL_P(zptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } @@ -92643,9 +92645,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); if (prop_info) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, zptr, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(zptr, zptr, value OPLINE_CC); + zend_binary_op(zptr, zptr, value, opline->extended_value); } } while (0); @@ -92654,7 +92656,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC } } } else { - zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_op_overloaded_property(zobj, name, cache_slot, value, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); } if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -92695,7 +92697,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_OBJ_SPEC_U && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -92719,10 +92721,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_OBJ_SPEC_U } } else { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); - zend_pre_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -92759,7 +92761,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_OBJ_SPEC_ && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -92781,10 +92783,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_OBJ_SPEC_ ZVAL_NULL(EX_VAR(opline->result.var)); } else { prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); - zend_post_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -92976,7 +92978,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_W_SPEC_U zend_fetch_property_address( result, container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL), - BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC); + BP_VAR_W, opline->extended_value, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_UNUSED == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -92993,7 +92995,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_RW_SPEC_ container = &EX(This); property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_UNUSED == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -93148,7 +93150,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_UNSET_SP container = &EX(This); property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_UNUSED == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -93173,7 +93175,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_UN object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -93327,7 +93329,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_UN object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -93481,7 +93483,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_UN object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -93635,7 +93637,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_UN object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -93787,19 +93789,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_REF_SPE if (1) { if (IS_UNUSED == IS_UNUSED) { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CV, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } @@ -93823,19 +93825,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_REF_SPE if (1) { if (IS_UNUSED == IS_UNUSED) { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_UNUSED, property, IS_CV, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } @@ -94488,7 +94490,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV zend zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, NULL, ZEND_PRE_INC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -94557,7 +94559,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV zend var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, NULL, ZEND_PRE_DEC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -94626,7 +94628,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV zend var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, EX_VAR(opline->result.var), ZEND_POST_INC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -94673,7 +94675,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV zend var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_incdec_typed_ref(ref, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC); + zend_incdec_typed_ref(ref, EX_VAR(opline->result.var), ZEND_POST_DEC SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } } @@ -95385,7 +95387,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FE_RESET_R_SPEC_CV ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { - bool is_empty = zend_fe_reset_iterator(array_ptr, 0 OPLINE_CC EXECUTE_DATA_CC); + bool is_empty = zend_fe_reset_iterator(array_ptr, 0, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(EG(exception))) { HANDLE_EXCEPTION(); @@ -95483,7 +95485,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FE_RESET_RW_SPEC_C ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { - bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC); + bool is_empty = zend_fe_reset_iterator(array_ptr, 1, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(EG(exception))) { HANDLE_EXCEPTION(); @@ -96717,7 +96719,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -96747,7 +96749,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC ref = Z_REF_P(zptr); zptr = Z_REFVAL_P(zptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } @@ -96755,9 +96757,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); if (prop_info) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, zptr, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(zptr, zptr, value OPLINE_CC); + zend_binary_op(zptr, zptr, value, opline->extended_value); } } while (0); @@ -96766,7 +96768,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC } } } else { - zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_op_overloaded_property(zobj, name, cache_slot, value, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); } if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -96821,11 +96823,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -96847,7 +96849,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_obj_dim(obj, dim SLIM_OPLINE_CC EXECUTE_DATA_CC); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { uint8_t old_type; @@ -96868,7 +96870,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC goto assign_dim_op_new_array; } else { dim = RT_CONSTANT(opline, opline->op2); - zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_dim_slow(container, dim, IS_CONST EXECUTE_DATA_CC); assign_dim_op_ret_null: FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -96896,11 +96898,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OP_SPEC_CV_ zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -96937,7 +96939,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_OBJ_SPEC_C && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -96961,10 +96963,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_OBJ_SPEC_C } } else { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); - zend_pre_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -97001,7 +97003,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_OBJ_SPEC_ && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -97023,10 +97025,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_OBJ_SPEC_ ZVAL_NULL(EX_VAR(opline->result.var)); } else { prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); - zend_post_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -97062,10 +97064,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_R_SPEC_C if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else { - zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); } @@ -97079,7 +97081,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_W_SPEC_C SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_W(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -97094,7 +97096,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_RW_SPEC_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_RW(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_RW(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -97109,7 +97111,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_IS_SPEC_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -97141,7 +97143,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_UNSET_SP SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_UNSET(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_UNSET(container, RT_CONSTANT(opline, opline->op2), IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -97335,7 +97337,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_W_SPEC_C zend_fetch_property_address( result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL), - BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC); + BP_VAR_W, opline->extended_value, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -97352,7 +97354,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_RW_SPEC_ container = EX_VAR(opline->op1.var); property = RT_CONSTANT(opline, opline->op2); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -97507,7 +97509,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_UNSET_SP container = EX_VAR(opline->op1.var); property = RT_CONSTANT(opline, opline->op2); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -97532,7 +97534,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_CV object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -97686,7 +97688,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_CV object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -97840,7 +97842,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_CV object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -97994,7 +97996,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_CV object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, RT_CONSTANT(opline, opline->op2) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -98227,7 +98229,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -98240,7 +98242,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV } else { dim = RT_CONSTANT(opline, opline->op2); value = RT_CONSTANT((opline+1), (opline+1)->op1); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -98379,7 +98381,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -98393,7 +98395,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV } else { dim = RT_CONSTANT(opline, opline->op2); value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -98532,7 +98534,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -98546,7 +98548,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV } else { dim = RT_CONSTANT(opline, opline->op2); value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -98685,7 +98687,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -98698,7 +98700,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV } else { dim = RT_CONSTANT(opline, opline->op2); value = EX_VAR((opline+1)->op1.var); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -98814,19 +98816,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_REF_SPE if (1) { if (IS_CV == IS_UNUSED) { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_CV, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_CV, property, IS_CONST, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } @@ -98850,19 +98852,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_REF_SPE if (1) { if (IS_CV == IS_UNUSED) { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CONST == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_CV, property, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_CV, property, IS_CONST, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } @@ -99690,7 +99692,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ARRAY_KEY_EXISTS_S if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) { array_key_exists_array: ht = Z_ARRVAL_P(subject); - result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC); + result = zend_array_key_exists_fast(ht, key EXECUTE_DATA_CC); } else { if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) { subject = Z_REFVAL_P(subject); @@ -99698,7 +99700,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ARRAY_KEY_EXISTS_S goto array_key_exists_array; } } - zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC); + zend_array_key_exists_error(subject, key SLIM_OPLINE_CC EXECUTE_DATA_CC); result = 0; } @@ -100066,7 +100068,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_ offset = Z_LVAL_P(dim); } else { SAVE_OPLINE(); - zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, IS_CONST, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -100093,7 +100095,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_ if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -100121,7 +100123,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_ offset = Z_LVAL_P(dim); } else { SAVE_OPLINE(); - zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR|IS_CV) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR|IS_CV), RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -100148,7 +100150,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_ if ((IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } @@ -100671,7 +100673,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -100701,7 +100703,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC ref = Z_REF_P(zptr); zptr = Z_REFVAL_P(zptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } @@ -100709,9 +100711,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); if (prop_info) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, zptr, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(zptr, zptr, value OPLINE_CC); + zend_binary_op(zptr, zptr, value, opline->extended_value); } } while (0); @@ -100720,7 +100722,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC } } } else { - zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_op_overloaded_property(zobj, name, cache_slot, value, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); } if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -100775,11 +100777,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -100801,7 +100803,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_obj_dim(obj, dim SLIM_OPLINE_CC EXECUTE_DATA_CC); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { uint8_t old_type; @@ -100822,7 +100824,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC goto assign_dim_op_new_array; } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); - zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_dim_slow(container, dim, (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC); assign_dim_op_ret_null: FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -100851,11 +100853,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OP_SPEC_CV_ zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -100893,7 +100895,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_OBJ_SPEC_C && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -100917,10 +100919,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_OBJ_SPEC_C } } else { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); - zend_pre_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -100958,7 +100960,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_OBJ_SPEC_ && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -100980,10 +100982,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_OBJ_SPEC_ ZVAL_NULL(EX_VAR(opline->result.var)); } else { prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); - zend_post_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -101020,10 +101022,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_R_SPEC_C if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else { - zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); @@ -101037,7 +101039,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_W_SPEC_C SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_W(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -101052,7 +101054,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_RW_SPEC_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_RW(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_RW(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -101067,7 +101069,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_IS_SPEC_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_read_IS(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_IS(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -101099,7 +101101,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_UNSET_SP SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_UNSET(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_UNSET(container, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR), RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -101288,7 +101290,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_W_SPEC_C zend_fetch_property_address( result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL), - BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC); + BP_VAR_W, opline->extended_value, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -101305,7 +101307,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_RW_SPEC_ container = EX_VAR(opline->op1.var); property = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -101460,7 +101462,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_UNSET_SP container = EX_VAR(opline->op1.var); property = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -101485,7 +101487,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_CV object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -101639,7 +101641,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_CV object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -101793,7 +101795,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_CV object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -101947,7 +101949,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_CV object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -102180,7 +102182,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -102193,7 +102195,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); value = RT_CONSTANT((opline+1), (opline+1)->op1); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -102332,7 +102334,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -102346,7 +102348,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -102485,7 +102487,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -102499,7 +102501,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -102638,7 +102640,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -102651,7 +102653,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV } else { dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC); value = EX_VAR((opline+1)->op1.var); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -102709,19 +102711,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_REF_SPE if (1) { if (IS_CV == IS_UNUSED) { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_CV, property, (IS_TMP_VAR|IS_VAR), value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_CV, property, (IS_TMP_VAR|IS_VAR), value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); @@ -102745,19 +102747,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_REF_SPE if (1) { if (IS_CV == IS_UNUSED) { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if ((IS_TMP_VAR|IS_VAR) == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_CV, property, (IS_TMP_VAR|IS_VAR), value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_CV, property, (IS_TMP_VAR|IS_VAR), value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } zval_ptr_dtor_nogc(EX_VAR(opline->op2.var)); @@ -103446,7 +103448,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ARRAY_KEY_EXISTS_S if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) { array_key_exists_array: ht = Z_ARRVAL_P(subject); - result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC); + result = zend_array_key_exists_fast(ht, key EXECUTE_DATA_CC); } else { if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) { subject = Z_REFVAL_P(subject); @@ -103454,7 +103456,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ARRAY_KEY_EXISTS_S goto array_key_exists_array; } } - zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC); + zend_array_key_exists_error(subject, key SLIM_OPLINE_CC EXECUTE_DATA_CC); result = 0; } @@ -103780,7 +103782,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_REF_SPEC_CV UNEXPECTED(!Z_ISREF_P(value_ptr))) { variable_ptr = zend_wrong_assign_to_variable_reference( - variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC); + variable_ptr, value_ptr, &garbage EXECUTE_DATA_CC); } else { zend_assign_to_variable_reference(variable_ptr, value_ptr, &garbage); } @@ -103883,11 +103885,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -103909,7 +103911,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_obj_dim(obj, dim SLIM_OPLINE_CC EXECUTE_DATA_CC); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { uint8_t old_type; @@ -103930,7 +103932,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC goto assign_dim_op_new_array; } else { dim = NULL; - zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_dim_slow(container, dim, IS_UNUSED EXECUTE_DATA_CC); assign_dim_op_ret_null: FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -103985,7 +103987,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_W_SPEC_C SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_W(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, NULL, IS_UNUSED, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -104000,7 +104002,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_RW_SPEC_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_RW(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_RW(container, NULL, IS_UNUSED, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -104123,7 +104125,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -104136,7 +104138,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV } else { dim = NULL; value = RT_CONSTANT((opline+1), (opline+1)->op1); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -104275,7 +104277,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -104289,7 +104291,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV } else { dim = NULL; value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -104428,7 +104430,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -104442,7 +104444,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV } else { dim = NULL; value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -104581,7 +104583,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -104594,7 +104596,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV } else { dim = NULL; value = EX_VAR((opline+1)->op1.var); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -106075,7 +106077,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -106105,7 +106107,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC ref = Z_REF_P(zptr); zptr = Z_REFVAL_P(zptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } @@ -106113,9 +106115,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); if (prop_info) { /* special case for typed properties */ - zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_prop(prop_info, zptr, value, opline->extended_value EXECUTE_DATA_CC); } else { - zend_binary_op(zptr, zptr, value OPLINE_CC); + zend_binary_op(zptr, zptr, value, opline->extended_value); } } while (0); @@ -106124,7 +106126,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_OP_SPEC } } } else { - zend_assign_op_overloaded_property(zobj, name, cache_slot, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_op_overloaded_property(zobj, name, cache_slot, value, RETURN_VALUE(opline), opline->extended_value EXECUTE_DATA_CC); } if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -106179,11 +106181,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -106205,7 +106207,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_obj_dim(obj, dim SLIM_OPLINE_CC EXECUTE_DATA_CC); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { uint8_t old_type; @@ -106226,7 +106228,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_OP_SPEC goto assign_dim_op_new_array; } else { dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); - zend_binary_assign_op_dim_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_dim_slow(container, dim, IS_CV EXECUTE_DATA_CC); assign_dim_op_ret_null: FREE_OP((opline+1)->op1_type, (opline+1)->op1.var); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -106254,11 +106256,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OP_SPEC_CV_ zend_reference *ref = Z_REF_P(var_ptr); var_ptr = Z_REFVAL_P(var_ptr); if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { - zend_binary_assign_op_typed_ref(ref, value OPLINE_CC EXECUTE_DATA_CC); + zend_binary_assign_op_typed_ref(ref, value, opline->extended_value EXECUTE_DATA_CC); break; } } - zend_binary_op(var_ptr, var_ptr, value OPLINE_CC); + zend_binary_op(var_ptr, var_ptr, value, opline->extended_value); } while (0); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { @@ -106295,7 +106297,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_OBJ_SPEC_C && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -106319,10 +106321,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_PRE_INC_OBJ_SPEC_C } } else { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2); - zend_pre_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_pre_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_pre_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -106359,7 +106361,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_OBJ_SPEC_ && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) { ZVAL_UNDEFINED_OP1(); } - zend_throw_non_object_error(object, property OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, property SLIM_OPLINE_CC EXECUTE_DATA_CC); break; } @@ -106381,10 +106383,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_POST_INC_OBJ_SPEC_ ZVAL_NULL(EX_VAR(opline->result.var)); } else { prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2); - zend_post_incdec_property_zval(zptr, prop_info OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_property_zval(zptr, prop_info, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { - zend_post_incdec_overloaded_property(zobj, name, cache_slot OPLINE_CC EXECUTE_DATA_CC); + zend_post_incdec_overloaded_property(zobj, name, cache_slot, opline->opcode, RETURN_VALUE(opline) SLIM_OPLINE_CC EXECUTE_DATA_CC); } if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); @@ -106420,10 +106422,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_R_SPEC_C if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) { dim++; } - zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R_slow(container, dim, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else { - zend_fetch_dimension_address_read_R(container, dim, IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_R(container, dim, IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); } @@ -106437,7 +106439,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_W_SPEC_C SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_W(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_W(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -106452,7 +106454,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_RW_SPEC_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_RW(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_RW(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -106467,7 +106469,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_IS_SPEC_ SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_read_IS(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_read_IS(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -106499,7 +106501,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_DIM_UNSET_SP SAVE_OPLINE(); container = EX_VAR(opline->op1.var); - zend_fetch_dimension_address_UNSET(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_dimension_address_UNSET(container, EX_VAR(opline->op2.var), IS_CV, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -106688,7 +106690,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_W_SPEC_C zend_fetch_property_address( result, container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL), - BP_VAR_W, opline->extended_value, NULL OPLINE_CC EXECUTE_DATA_CC); + BP_VAR_W, opline->extended_value, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -106705,7 +106707,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_RW_SPEC_ container = EX_VAR(opline->op1.var); property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -106860,7 +106862,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_OBJ_UNSET_SP container = EX_VAR(opline->op1.var); property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); result = EX_VAR(opline->result.var); - zend_fetch_property_address(result, container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_property_address(result, container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, NULL SLIM_OPLINE_CC EXECUTE_DATA_CC); if (IS_CV == IS_VAR) { FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(opline->op1.var); @@ -106885,7 +106887,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_CV object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -107039,7 +107041,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_CV object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -107193,7 +107195,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_CV object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -107347,7 +107349,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_SPEC_CV object = Z_REFVAL_P(object); goto assign_object; } - zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) OPLINE_CC EXECUTE_DATA_CC); + zend_throw_non_object_error(object, _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC) SLIM_OPLINE_CC EXECUTE_DATA_CC); value = &EG(uninitialized_zval); goto free_and_exit_assign_obj; } @@ -107580,7 +107582,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -107593,7 +107595,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV } else { dim = EX_VAR(opline->op2.var); value = RT_CONSTANT((opline+1), (opline+1)->op1); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -107732,7 +107734,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -107746,7 +107748,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV } else { dim = EX_VAR(opline->op2.var); value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -107885,7 +107887,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); if (UNEXPECTED(GC_DELREF(obj) == 0)) { @@ -107899,7 +107901,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV } else { dim = EX_VAR(opline->op2.var); value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -108038,7 +108040,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV ZVAL_DEREF(value); } - zend_assign_to_object_dim(obj, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_object_dim(obj, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (UNEXPECTED(GC_DELREF(obj) == 0)) { zend_objects_store_del(obj); @@ -108051,7 +108053,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_DIM_SPEC_CV } else { dim = EX_VAR(opline->op2.var); value = EX_VAR((opline+1)->op1.var); - zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_string_offset(object_ptr, dim, value, RETURN_VALUE(opline) EXECUTE_DATA_CC); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { @@ -108173,7 +108175,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_REF_SPEC_CV UNEXPECTED(!Z_ISREF_P(value_ptr))) { variable_ptr = zend_wrong_assign_to_variable_reference( - variable_ptr, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC); + variable_ptr, value_ptr, &garbage EXECUTE_DATA_CC); } else { zend_assign_to_variable_reference(variable_ptr, value_ptr, &garbage); } @@ -108205,19 +108207,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_REF_SPE if (1) { if (IS_CV == IS_UNUSED) { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_CV, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_CV, property, IS_CV, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } @@ -108241,19 +108243,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ASSIGN_OBJ_REF_SPE if (1) { if (IS_CV == IS_UNUSED) { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_this_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_this_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_this_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } else { if (IS_CV == IS_CONST) { - zend_assign_to_property_reference_var_const(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_const(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } else { - zend_assign_to_property_reference_var_var(container, property, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference_var_var(container, property, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } } } else { - zend_assign_to_property_reference(container, IS_CV, property, IS_CV, value_ptr OPLINE_CC EXECUTE_DATA_CC); + zend_assign_to_property_reference(container, IS_CV, property, IS_CV, value_ptr, RETURN_VALUE(opline), opline->extended_value SLIM_OPLINE_CC EXECUTE_DATA_CC); } @@ -108940,7 +108942,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ARRAY_KEY_EXISTS_S if (EXPECTED(Z_TYPE_P(subject) == IS_ARRAY)) { array_key_exists_array: ht = Z_ARRVAL_P(subject); - result = zend_array_key_exists_fast(ht, key OPLINE_CC EXECUTE_DATA_CC); + result = zend_array_key_exists_fast(ht, key EXECUTE_DATA_CC); } else { if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(subject))) { subject = Z_REFVAL_P(subject); @@ -108948,7 +108950,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_ARRAY_KEY_EXISTS_S goto array_key_exists_array; } } - zend_array_key_exists_error(subject, key OPLINE_CC EXECUTE_DATA_CC); + zend_array_key_exists_error(subject, key SLIM_OPLINE_CC EXECUTE_DATA_CC); result = 0; } @@ -109425,7 +109427,7 @@ static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_fetch_static_prop_helper_ prop = zend_fetch_static_property_address( &prop_info, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS, type, - type == BP_VAR_W ? opline->extended_value : 0 OPLINE_CC EXECUTE_DATA_CC); + type == BP_VAR_W ? opline->extended_value : 0, opline->op1_type, opline->op2_type, opline->op1, opline->op2 EXECUTE_DATA_CC); if (UNEXPECTED(!prop)) { ZEND_ASSERT(EG(exception) || (type == BP_VAR_IS)); prop = &EG(uninitialized_zval); @@ -109605,7 +109607,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV_EX z if (retval == NULL) { if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) { fetch_this: - zend_fetch_this_var(type OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_this_var(type, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CONST != IS_CONST) { zend_tmp_string_release(tmp_name); } @@ -109706,7 +109708,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV_EX z if (retval == NULL) { if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) { fetch_this: - zend_fetch_this_var(type OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_this_var(type, RETURN_VALUE(opline) EXECUTE_DATA_CC); if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { zend_tmp_string_release(tmp_name); } @@ -109807,7 +109809,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV_EX z if (retval == NULL) { if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) { fetch_this: - zend_fetch_this_var(type OPLINE_CC EXECUTE_DATA_CC); + zend_fetch_this_var(type, RETURN_VALUE(opline) EXECUTE_DATA_CC); if (IS_CV != IS_CONST) { zend_tmp_string_release(tmp_name); } diff --git a/Zend/zend_vm_gen.php b/Zend/zend_vm_gen.php index cdb5ea3cd7783..0a7f7a4b75450 100755 --- a/Zend/zend_vm_gen.php +++ b/Zend/zend_vm_gen.php @@ -705,6 +705,114 @@ function gen_code($f, $spec, $kind, $code, $op1, $op2, $name, $extra_spec=null) $op_data_get_zval_ptr_deref, $op_data_get_zval_ptr_ptr, $op_data_free_op; + global $operand_usage; + $pattern = '# + (?P \\bOP(?P1|2|_DATA)_TYPE\\b) + | (?P \\bRETURN_VALUE_USED\\b) + | (?P \\bGET_OP(?P1|2|_DATA)_[A-Z_]*\\() + | (?P \\bRETURN_VALUE\\b) + | (?P \\bFREE_OP(?P1|2|_DATA)(?:_[A-Z_]*)?\\() + | (?P \\bopline->(?Pop1|op2|result)\\b) + | (?P\\bopline->extended_value\\b) + | (?P \\bOPLINE_CC?\\b) + | (?P \\bZEND_VM_DISPATCH_TO_(?:HANDLER|HELPER)\\((?P[^,) ]+)[^)]*\\)?\\b) + | (?P \\bZEND_VM_SMART_BRANCH) + #x'; + + preg_match_all($pattern, $code, $m, PREG_SET_ORDER); + $usages = []; + $op_type = fn ($op) => match ($op) { + '1' => $op1, + '2' => $op2, + '_DATA_' => $extra_spec['OP_DATA'] ?? 'ANY', + }; + + foreach ($m as $set) { + switch (true) { + case !empty($set['get_type']): + $op_type = match ($set['get_type_op']) { + '1' => $op1, + '2' => $op2, + '_DATA' => $extra_spec['OP_DATA'] ?? 'ANY', + }; + if ($extra_spec['OBSERVER'] ?? false) { + /* Unspecialized variant, will fetch wide op */ + } else if ($op_type === 'ANY') { + $usages[] = sprintf('ZEND_VM_USES_OP%s_TYPE', $set['get_type_op']); + } + break; + case !empty($set['ret_type']): + if ($extra_spec['OBSERVER'] ?? false) { + /* Unspecialized variant, will fetch wide op */ + } else if (!isset($extra_spec['RETVAL'])) { + $usages[] = 'ZEND_VM_USES_RESULT_TYPE'; + } + break; + case !empty($set['get_ret']): + if ($extra_spec['OBSERVER'] ?? false) { + /* Unspecialized variant, will fetch wide op */ + } else if (!isset($extra_spec['RETVAL'])) { + $usages[] = 'ZEND_VM_USES_RESULT'; + } + break; + case !empty($set['get_op']): + $usages[] = sprintf('ZEND_VM_USES_OP%s', $set['get_op_op']); + break; + case !empty($set['free_op']): + $usages[] = sprintf('ZEND_VM_USES_OP%s', $set['free_op_op']); + break; + case !empty($set['access']): + $op = match ($set['access_op']) { + 'op1' => 'OP1', + 'op2' => 'OP2', + 'result' => 'RESULT', + }; + $usages[] = sprintf('ZEND_VM_USES_%s', $op); + break; + case !empty($set['ext_value']): + $usages[] = 'ZEND_VM_USES_EXTENDED_VALUE'; + break; + case !empty($set['opline']): + $usages[] = 'ZEND_VM_USES_OPLINE'; + break; + case !empty($set['handler']): + $handler_name = $set['handler_name']; + if (in_array($handler_name, [ + 'zend_add_helper', + 'zend_sub_helper', + 'zend_mul_helper', + 'zend_mod_helper', + 'zend_shift_left_helper', + 'zend_shift_right_helper', + 'zend_bw_or_helper', + 'zend_bw_and_helper', + 'zend_bw_not_helper', + 'zend_bw_xor_helper', + 'zend_is_equal_helper', + 'zend_is_not_equal_helper', + 'zend_is_smaller_helper', + 'zend_is_smaller_or_equal_helper', + 'zend_case_helper', + ])) { + /* This is a slow path, will fetch wide op + * or pass type and return_value as arguments */ + } else { + $usages[] = function () use (&$operand_usage, $handler_name, $name) { + return $operand_usage[$handler_name]; + }; + } + break; + case !empty($set['smart_br']): + $usages[] = 'ZEND_VM_USES_RESULT'; + $usages[] = 'ZEND_VM_USES_RESULT_TYPE'; + break; + default: + throw new Exception(json_encode($m)); + } + } + + $operand_usage[$name] = [...($operand_usage[$name] ?? []), ...$usages]; + // Specializing $specialized_replacements = array( "/OP1_TYPE/" => $op1_type[$op1], @@ -748,6 +856,7 @@ function gen_code($f, $spec, $kind, $code, $op1, $op2, $name, $extra_spec=null) "/GET_OP_DATA_ZVAL_PTR_PTR\(([^)]*)\)/" => $op_data_get_zval_ptr_ptr[isset($extra_spec['OP_DATA']) ? $extra_spec['OP_DATA'] : "ANY"], "/FREE_OP_DATA\(\)/" => $op_data_free_op[isset($extra_spec['OP_DATA']) ? $extra_spec['OP_DATA'] : "ANY"], "/RETURN_VALUE_USED\(opline\)/" => isset($extra_spec['RETVAL']) ? $extra_spec['RETVAL'] : "RETURN_VALUE_USED(opline)", + "/RETURN_VALUE\(opline\)/" => isset($extra_spec['RETVAL']) ? ($extra_spec['RETVAL'] ? "EX_VAR(opline->result.var)" : "NULL") : "RETURN_VALUE(opline)", "/arg_num <= MAX_ARG_FLAG_NUM/" => isset($extra_spec['QUICK_ARG']) ? $extra_spec['QUICK_ARG'] : "arg_num <= MAX_ARG_FLAG_NUM", "/ZEND_VM_SMART_BRANCH\(\s*([^,)]*)\s*,\s*([^)]*)\s*\)/" => isset($extra_spec['SMART_BRANCH']) ? ($extra_spec['SMART_BRANCH'] == 1 ? @@ -2526,9 +2635,27 @@ function gen_vm_opcodes_header( $str .= "#define ZEND_VM_OP1_FLAGS(flags) (flags & 0xff)\n"; $str .= "#define ZEND_VM_OP2_FLAGS(flags) ((flags >> 8) & 0xff)\n"; $str .= "\n"; + + $operand_usage_flags = [ + 'ZEND_VM_USES_OP1', + 'ZEND_VM_USES_OP2', + 'ZEND_VM_USES_OP_DATA', + 'ZEND_VM_USES_RESULT', + 'ZEND_VM_USES_OP1_TYPE', + 'ZEND_VM_USES_OP2_TYPE', + 'ZEND_VM_USES_OP_DATA_TYPE', + 'ZEND_VM_USES_RESULT_TYPE', + 'ZEND_VM_USES_EXTENDED_VALUE', + ]; + foreach ($operand_usage_flags as $bit => $name) { + $str .= sprintf("#define %-28s (1<<%d)\n", $name, $bit); + } + $str .= "\n"; + $str .= "BEGIN_EXTERN_C()\n\n"; $str .= "ZEND_API const char* ZEND_FASTCALL zend_get_opcode_name(uint8_t opcode);\n"; $str .= "ZEND_API uint32_t ZEND_FASTCALL zend_get_opcode_flags(uint8_t opcode);\n"; + $str .= "ZEND_API uint32_t ZEND_FASTCALL zend_get_opcode_operand_usage(uint8_t opcode);\n"; $str .= "ZEND_API uint8_t zend_get_opcode_id(const char *name, size_t length);\n\n"; $str .= "END_EXTERN_C()\n\n"; @@ -2552,7 +2679,9 @@ function gen_vm_opcodes_header( function gen_vm($def, $skel) { global $definition_file, $skeleton_file, $executor_file, $op_types, $list, $opcodes, $helpers, $params, $opnames, - $vm_op_flags, $used_extra_spec; + $vm_op_flags, $used_extra_spec, $operand_usage; + + $operand_usage = []; // Load definition file $in = @file($def); @@ -2825,55 +2954,6 @@ function gen_vm($def, $skel) { write_file_if_changed(__DIR__ . "/zend_vm_opcodes.h", $str); echo "zend_vm_opcodes.h generated successfully.\n"; - // zend_vm_opcodes.c - $f = fopen(__DIR__ . "/zend_vm_opcodes.c", "w+") or die("ERROR: Cannot create zend_vm_opcodes.c\n"); - - // Insert header - out($f, HEADER_TEXT); - fputs($f,"#include \n"); - fputs($f,"#include \n"); - fputs($f,"#include \n\n"); - - fputs($f,"static const char *zend_vm_opcodes_names[".($max_opcode + 1)."] = {\n"); - for ($i = 0; $i <= $max_opcode; $i++) { - fputs($f,"\t".(isset($opcodes[$i]["op"])?'"'.$opcodes[$i]["op"].'"':"NULL").",\n"); - } - fputs($f, "};\n\n"); - - fputs($f,"static uint32_t zend_vm_opcodes_flags[".($max_opcode + 1)."] = {\n"); - for ($i = 0; $i <= $max_opcode; $i++) { - fprintf($f, "\t0x%08x,\n", isset($opcodes[$i]["flags"]) ? $opcodes[$i]["flags"] : 0); - } - fputs($f, "};\n\n"); - - fputs($f, "ZEND_API const char* ZEND_FASTCALL zend_get_opcode_name(uint8_t opcode) {\n"); - fputs($f, "\tif (UNEXPECTED(opcode > ZEND_VM_LAST_OPCODE)) {\n"); - fputs($f, "\t\treturn NULL;\n"); - fputs($f, "\t}\n"); - fputs($f, "\treturn zend_vm_opcodes_names[opcode];\n"); - fputs($f, "}\n"); - - fputs($f, "ZEND_API uint32_t ZEND_FASTCALL zend_get_opcode_flags(uint8_t opcode) {\n"); - fputs($f, "\tif (UNEXPECTED(opcode > ZEND_VM_LAST_OPCODE)) {\n"); - fputs($f, "\t\topcode = ZEND_NOP;\n"); - fputs($f, "\t}\n"); - fputs($f, "\treturn zend_vm_opcodes_flags[opcode];\n"); - fputs($f, "}\n"); - - fputs($f, "ZEND_API uint8_t zend_get_opcode_id(const char *name, size_t length) {\n"); - fputs($f, "\tuint8_t opcode;\n"); - fputs($f, "\tfor (opcode = 0; opcode < (sizeof(zend_vm_opcodes_names) / sizeof(zend_vm_opcodes_names[0])) - 1; opcode++) {\n"); - fputs($f, "\t\tconst char *opcode_name = zend_vm_opcodes_names[opcode];\n"); - fputs($f, "\t\tif (opcode_name && strncmp(opcode_name, name, length) == 0) {\n"); - fputs($f, "\t\t\treturn opcode;\n"); - fputs($f, "\t\t}\n"); - fputs($f, "\t}\n"); - fputs($f, "\treturn ZEND_VM_LAST_OPCODE + 1;\n"); - fputs($f, "}\n"); - - fclose($f); - echo "zend_vm_opcodes.c generated successfully.\n"; - // Generate zend_vm_execute.h $f = fopen(__DIR__ . "/zend_vm_execute.h", "w+") or die("ERROR: Cannot create zend_vm_execute.h\n"); $executor_file = realpath(__DIR__ . "/zend_vm_execute.h"); @@ -3206,6 +3286,86 @@ function gen_vm($def, $skel) { fclose($f); echo "zend_vm_execute.h generated successfully.\n"; + + // zend_vm_opcodes.c + $f = fopen(__DIR__ . "/zend_vm_opcodes.c", "w+") or die("ERROR: Cannot create zend_vm_opcodes.c\n"); + + // Insert header + out($f, HEADER_TEXT); + fputs($f,"#include \n"); + fputs($f,"#include \n"); + fputs($f,"#include \n\n"); + + fputs($f,"static const char *zend_vm_opcodes_names[".($max_opcode + 1)."] = {\n"); + for ($i = 0; $i <= $max_opcode; $i++) { + fputs($f,"\t".(isset($opcodes[$i]["op"])?'"'.$opcodes[$i]["op"].'"':"NULL").",\n"); + } + fputs($f, "};\n\n"); + + fputs($f,"static uint32_t zend_vm_opcodes_flags[".($max_opcode + 1)."] = {\n"); + for ($i = 0; $i <= $max_opcode; $i++) { + fprintf($f, "\t0x%08x,\n", isset($opcodes[$i]["flags"]) ? $opcodes[$i]["flags"] : 0); + } + fputs($f, "};\n\n"); + + fputs($f,"static uint32_t zend_vm_operand_usage[".($max_opcode + 1)."] = {\n"); + $resolve = function ($usages) use (&$resolve) { + foreach ($usages as $usage) { + if ($usage instanceof Closure) { + yield from $resolve($usage()); + } else { + yield $usage; + } + } + }; + for ($i = 0; $i <= $max_opcode; $i++) { + $name = $opcodes[$i]["op"] ?? 'UNUSED'; + $usages = array_unique([...$resolve($operand_usage[$name] ?? [])]); + if ($usages !== []) { + sort($usages); + fprintf($f,"\t/* %s */ %s,\n", $name, implode(' | ', $usages)); + } else { + fprintf($f,"\t/* %s */ 0,\n", $name); + } + } + fputs($f, "};\n\n"); + + fputs($f, "ZEND_API const char* ZEND_FASTCALL zend_get_opcode_name(uint8_t opcode) {\n"); + fputs($f, "\tif (UNEXPECTED(opcode > ZEND_VM_LAST_OPCODE)) {\n"); + fputs($f, "\t\treturn NULL;\n"); + fputs($f, "\t}\n"); + fputs($f, "\treturn zend_vm_opcodes_names[opcode];\n"); + fputs($f, "}\n"); + + fputs($f, "ZEND_API uint32_t ZEND_FASTCALL zend_get_opcode_flags(uint8_t opcode) {\n"); + fputs($f, "\tif (UNEXPECTED(opcode > ZEND_VM_LAST_OPCODE)) {\n"); + fputs($f, "\t\topcode = ZEND_NOP;\n"); + fputs($f, "\t}\n"); + fputs($f, "\treturn zend_vm_opcodes_flags[opcode];\n"); + fputs($f, "}\n"); + + fputs($f, "ZEND_API uint32_t ZEND_FASTCALL zend_get_opcode_operand_usage(uint8_t opcode) {\n"); + fputs($f, "\tif (UNEXPECTED(opcode > ZEND_VM_LAST_OPCODE)) {\n"); + fputs($f, "\t\topcode = ZEND_NOP;\n"); + fputs($f, "\t}\n"); + fputs($f, "\treturn zend_vm_operand_usage[opcode];\n"); + fputs($f, "}\n"); + + fputs($f, "ZEND_API uint8_t zend_get_opcode_id(const char *name, size_t length) {\n"); + fputs($f, "\tuint8_t opcode;\n"); + fputs($f, "\tfor (opcode = 0; opcode < (sizeof(zend_vm_opcodes_names) / sizeof(zend_vm_opcodes_names[0])) - 1; opcode++) {\n"); + fputs($f, "\t\tconst char *opcode_name = zend_vm_opcodes_names[opcode];\n"); + fputs($f, "\t\tif (opcode_name && strncmp(opcode_name, name, length) == 0) {\n"); + fputs($f, "\t\t\treturn opcode;\n"); + fputs($f, "\t\t}\n"); + fputs($f, "\t}\n"); + fputs($f, "\treturn ZEND_VM_LAST_OPCODE + 1;\n"); + fputs($f, "}\n"); + + fclose($f); + echo "zend_vm_opcodes.c generated successfully.\n"; + + } function write_file_if_changed(string $filename, string $contents) { diff --git a/Zend/zend_vm_opcodes.c b/Zend/zend_vm_opcodes.c index 00ad38baaafeb..43d621c1b1cda 100644 --- a/Zend/zend_vm_opcodes.c +++ b/Zend/zend_vm_opcodes.c @@ -450,6 +450,220 @@ static uint32_t zend_vm_opcodes_flags[211] = { 0x00000303, }; +static uint32_t zend_vm_operand_usage[211] = { + /* ZEND_NOP */ 0, + /* ZEND_ADD */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_SUB */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_MUL */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_DIV */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_MOD */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_SL */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_SR */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_CONCAT */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_BW_OR */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_BW_AND */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_BW_XOR */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_POW */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_BW_NOT */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_BOOL_NOT */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_BOOL_XOR */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_IS_IDENTICAL */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_IS_NOT_IDENTICAL */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_IS_EQUAL */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_IS_NOT_EQUAL */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_IS_SMALLER */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_IS_SMALLER_OR_EQUAL */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_ASSIGN */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_ASSIGN_DIM */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP_DATA | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_ASSIGN_OBJ */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP_DATA | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_ASSIGN_STATIC_PROP */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP1_TYPE | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE | ZEND_VM_USES_OP_DATA | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_ASSIGN_OP */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_ASSIGN_DIM_OP */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP_DATA | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_ASSIGN_OBJ_OP */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP_DATA | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_ASSIGN_STATIC_PROP_OP */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP1_TYPE | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE | ZEND_VM_USES_OP_DATA | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_ASSIGN_REF */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_QM_ASSIGN */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_ASSIGN_OBJ_REF */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP_DATA | ZEND_VM_USES_RESULT, + /* ZEND_ASSIGN_STATIC_PROP_REF */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP1_TYPE | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE | ZEND_VM_USES_OP_DATA | ZEND_VM_USES_OP_DATA_TYPE | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_PRE_INC */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_PRE_DEC */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_POST_INC */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_POST_DEC */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_PRE_INC_STATIC_PROP */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP1_TYPE | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE | ZEND_VM_USES_RESULT, + /* ZEND_PRE_DEC_STATIC_PROP */ 0, + /* ZEND_POST_INC_STATIC_PROP */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP1_TYPE | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE | ZEND_VM_USES_RESULT, + /* ZEND_POST_DEC_STATIC_PROP */ 0, + /* ZEND_JMP */ ZEND_VM_USES_OP1, + /* ZEND_JMPZ */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2, + /* ZEND_JMPNZ */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2, + /* UNUSED */ 0, + /* ZEND_JMPZ_EX */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_JMPNZ_EX */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_CASE */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_CHECK_VAR */ ZEND_VM_USES_OP1, + /* ZEND_SEND_VAR_NO_REF_EX */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_CAST */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_BOOL */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_FAST_CONCAT */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_ROPE_INIT */ ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_ROPE_ADD */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2, + /* ZEND_ROPE_END */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_BEGIN_SILENCE */ ZEND_VM_USES_RESULT, + /* ZEND_END_SILENCE */ ZEND_VM_USES_OP1, + /* ZEND_INIT_FCALL_BY_NAME */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_DO_FCALL */ ZEND_VM_USES_RESULT, + /* ZEND_INIT_FCALL */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_RETURN */ ZEND_VM_USES_OP1, + /* ZEND_RECV */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_RECV_INIT */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_SEND_VAL */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_SEND_VAR_EX */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_SEND_REF */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_NEW */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_INIT_NS_FCALL_BY_NAME */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_FREE */ ZEND_VM_USES_OP1, + /* ZEND_INIT_ARRAY */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_ADD_ARRAY_ELEMENT */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_INCLUDE_OR_EVAL */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_UNSET_VAR */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1, + /* ZEND_UNSET_DIM */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2, + /* ZEND_UNSET_OBJ */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2, + /* ZEND_FE_RESET_R */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_FE_FETCH_R */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* UNUSED */ 0, + /* ZEND_FETCH_R */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_DIM_R */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_OBJ_R */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_W */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_DIM_W */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_OBJ_W */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_RW */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_DIM_RW */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_OBJ_RW */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_IS */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_DIM_IS */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_OBJ_IS */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_FUNC_ARG */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_DIM_FUNC_ARG */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_OBJ_FUNC_ARG */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_UNSET */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_DIM_UNSET */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_OBJ_UNSET */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_LIST_R */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_CONSTANT */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_CHECK_FUNC_ARG */ ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_EXT_STMT */ 0, + /* ZEND_EXT_FCALL_BEGIN */ 0, + /* ZEND_EXT_FCALL_END */ 0, + /* ZEND_EXT_NOP */ 0, + /* ZEND_TICKS */ ZEND_VM_USES_EXTENDED_VALUE, + /* ZEND_SEND_VAR_NO_REF */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_CATCH */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_THROW */ ZEND_VM_USES_OP1, + /* ZEND_FETCH_CLASS */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_CLONE */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_RETURN_BY_REF */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1, + /* ZEND_INIT_METHOD_CALL */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_INIT_STATIC_METHOD_CALL */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_ISSET_ISEMPTY_VAR */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_ISSET_ISEMPTY_DIM_OBJ */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_SEND_VAL_EX */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_SEND_VAR */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_INIT_USER_CALL */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2, + /* ZEND_SEND_ARRAY */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP1_TYPE | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE, + /* ZEND_SEND_USER */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_STRLEN */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_DEFINED */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_TYPE_CHECK */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_VERIFY_RETURN_TYPE */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_FE_RESET_RW */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_FE_FETCH_RW */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_FE_FREE */ ZEND_VM_USES_OP1, + /* ZEND_INIT_DYNAMIC_CALL */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP2, + /* ZEND_DO_ICALL */ ZEND_VM_USES_RESULT, + /* ZEND_DO_UCALL */ ZEND_VM_USES_RESULT, + /* ZEND_DO_FCALL_BY_NAME */ ZEND_VM_USES_RESULT, + /* ZEND_PRE_INC_OBJ */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_PRE_DEC_OBJ */ 0, + /* ZEND_POST_INC_OBJ */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_POST_DEC_OBJ */ 0, + /* ZEND_ECHO */ ZEND_VM_USES_OP1, + /* ZEND_OP_DATA */ 0, + /* ZEND_INSTANCEOF */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_GENERATOR_CREATE */ 0, + /* ZEND_MAKE_REF */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_DECLARE_FUNCTION */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2, + /* ZEND_DECLARE_LAMBDA_FUNCTION */ ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_DECLARE_CONST */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2, + /* ZEND_DECLARE_CLASS */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE, + /* ZEND_DECLARE_CLASS_DELAYED */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2, + /* ZEND_DECLARE_ANON_CLASS */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE | ZEND_VM_USES_RESULT, + /* ZEND_ADD_ARRAY_UNPACK */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_ISSET_ISEMPTY_PROP_OBJ */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_HANDLE_EXCEPTION */ 0, + /* ZEND_USER_OPCODE */ 0, + /* ZEND_ASSERT_CHECK */ ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_JMP_SET */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_UNSET_CV */ ZEND_VM_USES_OP1, + /* ZEND_ISSET_ISEMPTY_CV */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_FETCH_LIST_W */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_SEPARATE */ ZEND_VM_USES_OP1, + /* ZEND_FETCH_CLASS_NAME */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_CALL_TRAMPOLINE */ 0, + /* ZEND_DISCARD_EXCEPTION */ ZEND_VM_USES_OP1, + /* ZEND_YIELD */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_GENERATOR_RETURN */ ZEND_VM_USES_OP1, + /* ZEND_FAST_CALL */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_FAST_RET */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2, + /* ZEND_RECV_VARIADIC */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_SEND_UNPACK */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP1_TYPE, + /* ZEND_YIELD_FROM */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_COPY_TMP */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_BIND_GLOBAL */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2, + /* ZEND_COALESCE */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_SPACESHIP */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_FUNC_NUM_ARGS */ ZEND_VM_USES_RESULT, + /* ZEND_FUNC_GET_ARGS */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_STATIC_PROP_R */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP1_TYPE | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_STATIC_PROP_W */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP1_TYPE | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_STATIC_PROP_RW */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP1_TYPE | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_STATIC_PROP_IS */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP1_TYPE | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_STATIC_PROP_FUNC_ARG */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP1_TYPE | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE | ZEND_VM_USES_RESULT, + /* ZEND_FETCH_STATIC_PROP_UNSET */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP1_TYPE | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE | ZEND_VM_USES_RESULT, + /* ZEND_UNSET_STATIC_PROP */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP1_TYPE | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE, + /* ZEND_ISSET_ISEMPTY_STATIC_PROP */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP1_TYPE | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_FETCH_CLASS_CONSTANT */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_BIND_LEXICAL */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2, + /* ZEND_BIND_STATIC */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE, + /* ZEND_FETCH_THIS */ ZEND_VM_USES_RESULT, + /* ZEND_SEND_FUNC_ARG */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_ISSET_ISEMPTY_THIS */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_RESULT, + /* ZEND_SWITCH_LONG */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2, + /* ZEND_SWITCH_STRING */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2, + /* ZEND_IN_ARRAY */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_COUNT */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_GET_CLASS */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_GET_CALLED_CLASS */ ZEND_VM_USES_RESULT, + /* ZEND_GET_TYPE */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_ARRAY_KEY_EXISTS */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_MATCH */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2, + /* ZEND_CASE_STRICT */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT | ZEND_VM_USES_RESULT_TYPE, + /* ZEND_MATCH_ERROR */ ZEND_VM_USES_OP1, + /* ZEND_JMP_NULL */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_CHECK_UNDEF_ARGS */ 0, + /* ZEND_FETCH_GLOBALS */ ZEND_VM_USES_RESULT, + /* ZEND_VERIFY_NEVER_TYPE */ 0, + /* ZEND_CALLABLE_CONVERT */ ZEND_VM_USES_RESULT, + /* ZEND_BIND_INIT_STATIC_OR_JMP */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2, + /* ZEND_FRAMELESS_ICALL_0 */ ZEND_VM_USES_RESULT, + /* ZEND_FRAMELESS_ICALL_1 */ ZEND_VM_USES_OP1 | ZEND_VM_USES_RESULT, + /* ZEND_FRAMELESS_ICALL_2 */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP1_TYPE | ZEND_VM_USES_OP2 | ZEND_VM_USES_RESULT, + /* ZEND_FRAMELESS_ICALL_3 */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP1_TYPE | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP2_TYPE | ZEND_VM_USES_OP_DATA | ZEND_VM_USES_RESULT, + /* ZEND_JMP_FRAMELESS */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2, + /* ZEND_INIT_PARENT_PROPERTY_HOOK_CALL */ ZEND_VM_USES_EXTENDED_VALUE | ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2, + /* ZEND_DECLARE_ATTRIBUTED_CONST */ ZEND_VM_USES_OP1 | ZEND_VM_USES_OP2 | ZEND_VM_USES_OP_DATA, +}; + ZEND_API const char* ZEND_FASTCALL zend_get_opcode_name(uint8_t opcode) { if (UNEXPECTED(opcode > ZEND_VM_LAST_OPCODE)) { return NULL; @@ -462,6 +676,12 @@ ZEND_API uint32_t ZEND_FASTCALL zend_get_opcode_flags(uint8_t opcode) { } return zend_vm_opcodes_flags[opcode]; } +ZEND_API uint32_t ZEND_FASTCALL zend_get_opcode_operand_usage(uint8_t opcode) { + if (UNEXPECTED(opcode > ZEND_VM_LAST_OPCODE)) { + opcode = ZEND_NOP; + } + return zend_vm_operand_usage[opcode]; +} ZEND_API uint8_t zend_get_opcode_id(const char *name, size_t length) { uint8_t opcode; for (opcode = 0; opcode < (sizeof(zend_vm_opcodes_names) / sizeof(zend_vm_opcodes_names[0])) - 1; opcode++) { diff --git a/Zend/zend_vm_opcodes.h b/Zend/zend_vm_opcodes.h index 900b029e2b112..fecf03289752d 100644 --- a/Zend/zend_vm_opcodes.h +++ b/Zend/zend_vm_opcodes.h @@ -105,10 +105,21 @@ typedef const void* zend_vm_opcode_handler_t; #define ZEND_VM_OP1_FLAGS(flags) (flags & 0xff) #define ZEND_VM_OP2_FLAGS(flags) ((flags >> 8) & 0xff) +#define ZEND_VM_USES_OP1 (1<<0) +#define ZEND_VM_USES_OP2 (1<<1) +#define ZEND_VM_USES_OP_DATA (1<<2) +#define ZEND_VM_USES_RESULT (1<<3) +#define ZEND_VM_USES_OP1_TYPE (1<<4) +#define ZEND_VM_USES_OP2_TYPE (1<<5) +#define ZEND_VM_USES_OP_DATA_TYPE (1<<6) +#define ZEND_VM_USES_RESULT_TYPE (1<<7) +#define ZEND_VM_USES_EXTENDED_VALUE (1<<8) + BEGIN_EXTERN_C() ZEND_API const char* ZEND_FASTCALL zend_get_opcode_name(uint8_t opcode); ZEND_API uint32_t ZEND_FASTCALL zend_get_opcode_flags(uint8_t opcode); +ZEND_API uint32_t ZEND_FASTCALL zend_get_opcode_operand_usage(uint8_t opcode); ZEND_API uint8_t zend_get_opcode_id(const char *name, size_t length); END_EXTERN_C() diff --git a/ext/opcache/zend_persist.c b/ext/opcache/zend_persist.c index 38e58d5a16632..789219c7a3127 100644 --- a/ext/opcache/zend_persist.c +++ b/ext/opcache/zend_persist.c @@ -22,6 +22,7 @@ #include "zend.h" #include "ZendAccelerator.h" #include "zend_persist.h" +#include "zend_alloc.h" #include "zend_extensions.h" #include "zend_shared_alloc.h" #include "zend_vm.h" @@ -388,6 +389,214 @@ static void zend_persist_type(zend_type *type) { } ZEND_TYPE_FOREACH_END(); } +typedef union _znode_op32 { + uint32_t constant; + uint32_t var; + uint32_t num; + uint32_t opline_num; /* Needs to be signed */ + uint32_t jmp_offset; +} znode_op32; + +/* 32 bit operands; total size: 28 bytes (24 + 4 for alignment) */ +typedef struct _zend_op32 { + zend_vm_opcode_handler_t handler; + znode_op32 op1; + znode_op32 op2; + znode_op32 result; + uint32_t extended_value; + uint32_t _alignment; +} zend_op32; + +typedef union _znode_op16 { + uint16_t constant; + uint16_t var; + uint16_t num; + uint16_t opline_num; /* Needs to be signed */ + uint16_t jmp_offset; +} znode_op16; + +/* 16 bit operands; total size: 16 bytes */ +typedef struct _zend_op16 { + zend_vm_opcode_handler_t handler; + znode_op16 op1; + znode_op16 op2; + znode_op16 result; + uint16_t extended_value; +} zend_op16; + +static void dump_opcodes_sizes(zend_op_array *op_array) +{ + zend_op *op = op_array->opcodes; + zend_op *end = op + op_array->last; + + size_t orig_size = op_array->last * sizeof(zend_op); + + /* Size if oplines are encoded as + * either _zend_op16 (16 bit operands, 16 bytes total) + * or _zend_op32 (32 bit operands, 28 bytes total). + * Op types are fetched from the original zend_op. + */ + size_t slim_size = 0; + + /* Size if zend_op can exist in 3 sizes, and have a variable number of + * operands (arity is fixed per opcode). + * Handler is replaced by a uint16_t handler index field. + * OP_DATA is encoded as an operand. + * Extended_value, if needed, is encoded as a field of the same size as other operands. + * Operand types, if needed, are encoded on 4 bits each. + * + * Alignment: Ensuring alignment has a worse overhead of 1 byte per opline + * if we only care about handler_id, or 3 bytes if we align all fields. + * + * Example for an opcode needing op1, op2, op1_type, result: + * struct { + * uint16_t handler_id; + * uint8_t op1; + * uint8_t op2; + * uint8_t result; + * uint8_t types { uint8_t op1:4 }; + * } // Total: 6-8 bytes + * + * Example for an opcode needing op1, op2, result: + * struct { + * uint16_t handler_id; + * uint8_t op1; + * uint8_t op2; + * uint8_t result; + * } // Total: 5-8 bytes + * + * Example for an opcode needing op1, op2, result, extended_data, op2_type + * struct { + * uint16_t handler_id; + * uint8_t op1; + * uint8_t op2; + * uint8_t result; + * uint8_t types { uint8_t op2:4 }; + * uint8_t extended_data; + * } // Total: 8 bytes + * + * Example for a 32bit opcode needing op1, op2, op2_type: + * struct { + * uint16_t handler_id; + * uint32_t op1; + * uint32_t op2; + * uint8_t types { uint8_t op2:4 }; + * } // Total: 12-16 bytes + * + * We could actually generate structs for each handler. + */ + size_t variable_size_handler_aligned = 0; + size_t variable_size_all_aligned = 0; + + size_t num_oplines_per_size[5] = {0}; + size_t total_num_operands = 0; + size_t total_num_types = 0; + size_t total_num_extended_values = 0; + size_t num_oplines = 0; /* op_array->last without OP_DATA */ + + for (; op < end; op++) { + + size_t op_size; + uint32_t op3 = 0; + + /* Constants are a negative offset. Assume it's a positive offset. */ +#define OP_VALUE(_op) ( \ + _op ## _type == IS_CONST \ + ? ((uint32_t)-(int32_t)_op.constant) \ + : _op.num) \ + + if (op + 1 < end && (op+1)->opcode == ZEND_OP_DATA) { + op3 = OP_VALUE((op+1)->op1); + } + if (OP_VALUE(op->op1) <= UINT8_MAX && OP_VALUE(op->op2) <= UINT8_MAX + && op3 <= UINT8_MAX && OP_VALUE(op->result) <= UINT8_MAX + && op->extended_value <= UINT8_MAX) { + op_size = 1; + } else if (OP_VALUE(op->op1) <= UINT16_MAX && OP_VALUE(op->op2) <= UINT16_MAX + && op3 <= UINT16_MAX && OP_VALUE(op->result) <= UINT16_MAX + && op->extended_value <= UINT16_MAX) { + op_size = 2; + } else { + op_size = 4; + } + + if (op_size < 4) { + slim_size += sizeof(zend_op16); + } else { + slim_size += sizeof(zend_op32); + } + + if (op->opcode == ZEND_OP_DATA) { + continue; + } + + num_oplines++; + num_oplines_per_size[op_size]++; + + uint32_t operand_usage = zend_get_opcode_operand_usage(op->opcode); + /* + ZEND_ASSERT(op->op1.num == 0 || (operand_usage & ZEND_VM_USES_OP1)); + ZEND_ASSERT(op->op2.num == 0 || (operand_usage & ZEND_VM_USES_OP2)); + ZEND_ASSERT(op3 == 0 || (operand_usage & ZEND_VM_USES_OP_DATA)); + ZEND_ASSERT(op->result.num == 0 || (operand_usage & ZEND_VM_USES_RESULT) + || op->opcode == ZEND_ROPE_ADD); + ZEND_ASSERT(op->extended_value == 0 || (operand_usage & ZEND_VM_USES_EXTENDED_VALUE) + || op->opcode == ZEND_ROPE_INIT); + */ + + size_t types_used = 0 + + (bool)(operand_usage & ZEND_VM_USES_OP1_TYPE) + + (bool)(operand_usage & ZEND_VM_USES_OP2_TYPE) + + (bool)(operand_usage & ZEND_VM_USES_OP_DATA_TYPE) + + (bool)(operand_usage & ZEND_VM_USES_RESULT_TYPE) + ; + + size_t num_operands = 0 + + (bool)(operand_usage & ZEND_VM_USES_OP1) + + (bool)(operand_usage & ZEND_VM_USES_OP2) + + (bool)(operand_usage & ZEND_VM_USES_OP_DATA) + + (bool)(operand_usage & ZEND_VM_USES_RESULT) + + (bool)(operand_usage & ZEND_VM_USES_EXTENDED_VALUE) + ; + + size_t size = 2 // handler_id + + (num_operands * op_size) + + ((types_used + 2 - 1) / 2) + ; + + variable_size_handler_aligned += ZEND_MM_ALIGNED_SIZE_EX(size, 2); + variable_size_all_aligned += ZEND_MM_ALIGNED_SIZE_EX(size, 4); + total_num_operands += num_operands; + total_num_types += types_used; + total_num_extended_values += (bool)(operand_usage & ZEND_VM_USES_EXTENDED_VALUE); + } + + fprintf(stderr, "dump_opcode_sizes: %s:%" PRIu32 " orig: %zu" + " slim: %zu (%zd%%)" + " variable: %zu (%zd%%)" + " variable aligned: %zu (%zd%%)" + " ops: %zu operands: %zu" + " types: %zu extended_value: %zu" + " 8bit_oplines: %zu 16bit_oplines: %zu 32bit_oplines: %zu" + "\n", + ZSTR_VAL(op_array->filename), + op_array->line_start, + orig_size, + slim_size, + ((ssize_t)slim_size - (ssize_t)orig_size) * 100 / (ssize_t)orig_size, + variable_size_handler_aligned, + ((ssize_t)variable_size_handler_aligned - (ssize_t)orig_size) * 100 / (ssize_t)orig_size, + variable_size_all_aligned, + ((ssize_t)variable_size_all_aligned - (ssize_t)orig_size) * 100 / (ssize_t)orig_size, + num_oplines, + total_num_operands, + total_num_types, + total_num_extended_values, + num_oplines_per_size[1], + num_oplines_per_size[2], + num_oplines_per_size[4]); +} + static void zend_persist_op_array_ex(zend_op_array *op_array, zend_persistent_script* main_persistent_script) { zend_op *persist_ptr; @@ -627,6 +836,8 @@ static void zend_persist_op_array_ex(zend_op_array *op_array, zend_persistent_sc efree(op_array->opcodes); op_array->opcodes = new_opcodes; + + dump_opcodes_sizes(op_array); } if (op_array->filename) {