Lines Matching refs:opline

667 				zend_op *opline = op_array->opcodes + op_array->live_range[n+1].start;  in zend_start_live_range_ex()  local
670 while (opline < end) { in zend_start_live_range_ex()
671 if ((opline->opcode == ZEND_FREE || in zend_start_live_range_ex()
672 opline->opcode == ZEND_FE_FREE) && in zend_start_live_range_ex()
673 (opline->extended_value & ZEND_FREE_ON_RETURN) && in zend_start_live_range_ex()
674 opline->op2.num >= n) { in zend_start_live_range_ex()
675 opline->op2.num++; in zend_start_live_range_ex()
677 opline++; in zend_start_live_range_ex()
751 zend_op *opline = &CG(active_op_array)->opcodes[CG(active_op_array)->last-1]; in zend_do_free() local
753 while (opline->opcode == ZEND_END_SILENCE) { in zend_do_free()
754 opline--; in zend_do_free()
757 if (opline->result_type == IS_TMP_VAR && opline->result.var == op1->u.op.var) { in zend_do_free()
758 if (opline->opcode == ZEND_BOOL || opline->opcode == ZEND_BOOL_NOT) { in zend_do_free()
765 zend_op *opline = &CG(active_op_array)->opcodes[CG(active_op_array)->last-1]; in zend_do_free() local
766 while (opline->opcode == ZEND_END_SILENCE || in zend_do_free()
767 opline->opcode == ZEND_EXT_FCALL_END || in zend_do_free()
768 opline->opcode == ZEND_OP_DATA) { in zend_do_free()
769 opline--; in zend_do_free()
771 if (opline->result_type == IS_VAR in zend_do_free()
772 && opline->result.var == op1->u.op.var) { in zend_do_free()
773 if (opline->opcode == ZEND_FETCH_R || in zend_do_free()
774 opline->opcode == ZEND_FETCH_DIM_R || in zend_do_free()
775 opline->opcode == ZEND_FETCH_OBJ_R || in zend_do_free()
776 opline->opcode == ZEND_FETCH_STATIC_PROP_R) { in zend_do_free()
781 } else if (opline->opcode == ZEND_FETCH_THIS) { in zend_do_free()
782 opline->opcode = ZEND_NOP; in zend_do_free()
783 opline->result_type = IS_UNUSED; in zend_do_free()
785 opline->result_type = IS_UNUSED; in zend_do_free()
788 while (opline >= CG(active_op_array)->opcodes) { in zend_do_free()
789 if (opline->opcode == ZEND_FETCH_LIST && in zend_do_free()
790 opline->op1_type == IS_VAR && in zend_do_free()
791 opline->op1.var == op1->u.op.var) { in zend_do_free()
795 if (opline->result_type == IS_VAR in zend_do_free()
796 && opline->result.var == op1->u.op.var) { in zend_do_free()
797 if (opline->opcode == ZEND_NEW) { in zend_do_free()
802 opline--; in zend_do_free()
1076 ZEND_API int do_bind_function(const zend_op_array *op_array, const zend_op *opline, HashTable *func… in do_bind_function() argument
1082 lcname = CT_CONSTANT_EX(op_array, opline->op1.constant); in do_bind_function()
1085 lcname = RT_CONSTANT(op_array, opline->op1); in do_bind_function()
1117 ZEND_API zend_class_entry *do_bind_class(const zend_op_array* op_array, const zend_op *opline, Hash… in do_bind_class() argument
1123 lcname = CT_CONSTANT_EX(op_array, opline->op1.constant); in do_bind_class()
1126 lcname = RT_CONSTANT(op_array, opline->op1); in do_bind_class()
1152 …y *do_bind_inherited_class(const zend_op_array *op_array, const zend_op *opline, HashTable *class_… in do_bind_inherited_class() argument
1158 lcname = CT_CONSTANT_EX(op_array, opline->op1.constant); in do_bind_inherited_class()
1161 lcname = RT_CONSTANT(op_array, opline->op1); in do_bind_inherited_class()
1197 zend_op *opline = &CG(active_op_array)->opcodes[CG(active_op_array)->last-1]; in zend_do_early_binding() local
1200 while (opline->opcode == ZEND_TICKS && opline > CG(active_op_array)->opcodes) { in zend_do_early_binding()
1201 opline--; in zend_do_early_binding()
1204 switch (opline->opcode) { in zend_do_early_binding()
1206 if (do_bind_function(CG(active_op_array), opline, CG(function_table), 1) == FAILURE) { in zend_do_early_binding()
1212 if (do_bind_class(CG(active_op_array), opline, CG(class_table), 1) == NULL) { in zend_do_early_binding()
1219 zend_op *fetch_class_opline = opline-1; in zend_do_early_binding()
1233 *opline_num = opline - CG(active_op_array)->opcodes; in zend_do_early_binding()
1234 opline->opcode = ZEND_DECLARE_INHERITED_CLASS_DELAYED; in zend_do_early_binding()
1235 opline->result_type = IS_UNUSED; in zend_do_early_binding()
1236 opline->result.opline_num = -1; in zend_do_early_binding()
1240 if (do_bind_inherited_class(CG(active_op_array), opline, CG(class_table), ce, 1) == NULL) { in zend_do_early_binding()
1262 zend_hash_del(table, Z_STR_P(CT_CONSTANT(opline->op1)+1)); in zend_do_early_binding()
1263 zend_del_literal(CG(active_op_array), opline->op1.constant+1); in zend_do_early_binding()
1264 zend_del_literal(CG(active_op_array), opline->op1.constant); in zend_do_early_binding()
1265 MAKE_NOP(opline); in zend_do_early_binding()
1609 zend_op *opline; in zend_do_extended_info() local
1615 opline = get_next_op(CG(active_op_array)); in zend_do_extended_info()
1617 opline->opcode = ZEND_EXT_STMT; in zend_do_extended_info()
1618 SET_UNUSED(opline->op1); in zend_do_extended_info()
1619 SET_UNUSED(opline->op2); in zend_do_extended_info()
1625 zend_op *opline; in zend_do_extended_fcall_begin() local
1631 opline = get_next_op(CG(active_op_array)); in zend_do_extended_fcall_begin()
1633 opline->opcode = ZEND_EXT_FCALL_BEGIN; in zend_do_extended_fcall_begin()
1634 SET_UNUSED(opline->op1); in zend_do_extended_fcall_begin()
1635 SET_UNUSED(opline->op2); in zend_do_extended_fcall_begin()
1641 zend_op *opline; in zend_do_extended_fcall_end() local
1647 opline = get_next_op(CG(active_op_array)); in zend_do_extended_fcall_end()
1649 opline->opcode = ZEND_EXT_FCALL_END; in zend_do_extended_fcall_end()
1650 SET_UNUSED(opline->op1); in zend_do_extended_fcall_end()
1651 SET_UNUSED(opline->op2); in zend_do_extended_fcall_end()
1954 static void zend_adjust_for_fetch_type(zend_op *opline, uint32_t type) /* {{{ */ in zend_adjust_for_fetch_type() argument
1956 zend_uchar factor = (opline->opcode == ZEND_FETCH_STATIC_PROP_R) ? 1 : 3; in zend_adjust_for_fetch_type()
1958 if (opline->opcode == ZEND_FETCH_THIS) { in zend_adjust_for_fetch_type()
1966 opline->opcode += 1 * factor; in zend_adjust_for_fetch_type()
1969 opline->opcode += 2 * factor; in zend_adjust_for_fetch_type()
1972 opline->opcode += 3 * factor; in zend_adjust_for_fetch_type()
1975 opline->opcode += 4 * factor; in zend_adjust_for_fetch_type()
1976 opline->extended_value |= type >> BP_VAR_SHIFT; in zend_adjust_for_fetch_type()
1979 opline->opcode += 5 * factor; in zend_adjust_for_fetch_type()
1986 static inline void zend_make_var_result(znode *result, zend_op *opline) /* {{{ */ in zend_make_var_result() argument
1988 opline->result_type = IS_VAR; in zend_make_var_result()
1989 opline->result.var = get_temporary_variable(CG(active_op_array)); in zend_make_var_result()
1990 GET_NODE(result, opline->result); in zend_make_var_result()
1994 static inline void zend_make_tmp_result(znode *result, zend_op *opline) /* {{{ */ in zend_make_tmp_result() argument
1996 opline->result_type = IS_TMP_VAR; in zend_make_tmp_result()
1997 opline->result.var = get_temporary_variable(CG(active_op_array)); in zend_make_tmp_result()
1998 GET_NODE(result, opline->result); in zend_make_tmp_result()
2002 static void zend_find_live_range(zend_op *opline, zend_uchar type, uint32_t var) /* {{{ */ in zend_find_live_range() argument
2004 zend_op *def = opline; in zend_find_live_range()
2033 if (def + 1 == opline) { in zend_find_live_range()
2041 opline - CG(active_op_array)->opcodes, in zend_find_live_range()
2049 static zend_always_inline int zend_is_def_range(zend_op *opline, zend_uchar type, uint32_t var) /* … in zend_is_def_range() argument
2052 if (opline->result_type == type && opline->result.var == var) { in zend_is_def_range()
2053 return opline->opcode != ZEND_ADD_ARRAY_ELEMENT && in zend_is_def_range()
2054 opline->opcode != ZEND_ROPE_ADD; in zend_is_def_range()
2055 } else if (opline->opcode == ZEND_OP_DATA) { in zend_is_def_range()
2056 return (opline-1)->result_type == type && in zend_is_def_range()
2057 (opline-1)->result.var == var; in zend_is_def_range()
2058 } else if (opline->opcode == ZEND_END_SILENCE || in zend_is_def_range()
2059 opline->opcode == ZEND_NOP || in zend_is_def_range()
2060 opline->opcode == ZEND_EXT_NOP || in zend_is_def_range()
2061 opline->opcode == ZEND_EXT_STMT || in zend_is_def_range()
2062 opline->opcode == ZEND_EXT_FCALL_BEGIN || in zend_is_def_range()
2063 opline->opcode == ZEND_EXT_FCALL_END || in zend_is_def_range()
2064 opline->opcode == ZEND_TICKS) { in zend_is_def_range()
2065 opline--; in zend_is_def_range()
2073 static void zend_check_live_ranges(zend_op *opline) /* {{{ */ in zend_check_live_ranges() argument
2075 if ((opline->op1_type & (IS_VAR|IS_TMP_VAR)) && in zend_check_live_ranges()
2076 !zend_is_def_range(opline - 1, opline->op1_type, opline->op1.var)) { in zend_check_live_ranges()
2078 if (opline->opcode == ZEND_OP_DATA) { in zend_check_live_ranges()
2079 if (!zend_is_def_range(opline - 2, opline->op1_type, opline->op1.var)) { in zend_check_live_ranges()
2080 zend_find_live_range(opline - 1, opline->op1_type, opline->op1.var); in zend_check_live_ranges()
2082 } else if (opline->opcode == ZEND_INIT_STATIC_METHOD_CALL || in zend_check_live_ranges()
2083 opline->opcode == ZEND_NEW || in zend_check_live_ranges()
2084 opline->opcode == ZEND_FETCH_CLASS_CONSTANT || in zend_check_live_ranges()
2085 opline->opcode == ZEND_ADD_INTERFACE || in zend_check_live_ranges()
2086 opline->opcode == ZEND_ADD_TRAIT || in zend_check_live_ranges()
2087 opline->opcode == ZEND_BIND_TRAITS || in zend_check_live_ranges()
2088 opline->opcode == ZEND_VERIFY_ABSTRACT_CLASS) { in zend_check_live_ranges()
2090 } else if (opline->opcode == ZEND_FAST_RET) { in zend_check_live_ranges()
2092 } else if (opline->opcode == ZEND_CASE || in zend_check_live_ranges()
2093 opline->opcode == ZEND_SWITCH_LONG || in zend_check_live_ranges()
2094 opline->opcode == ZEND_SWITCH_STRING || in zend_check_live_ranges()
2095 opline->opcode == ZEND_FE_FETCH_R || in zend_check_live_ranges()
2096 opline->opcode == ZEND_FE_FETCH_RW || in zend_check_live_ranges()
2097 opline->opcode == ZEND_FE_FREE || in zend_check_live_ranges()
2098 opline->opcode == ZEND_ROPE_ADD || in zend_check_live_ranges()
2099 opline->opcode == ZEND_ROPE_END || in zend_check_live_ranges()
2100 opline->opcode == ZEND_END_SILENCE || in zend_check_live_ranges()
2101 opline->opcode == ZEND_FETCH_LIST || in zend_check_live_ranges()
2102 opline->opcode == ZEND_VERIFY_RETURN_TYPE || in zend_check_live_ranges()
2103 opline->opcode == ZEND_BIND_LEXICAL) { in zend_check_live_ranges()
2106 zend_find_live_range(opline, opline->op1_type, opline->op1.var); in zend_check_live_ranges()
2110 if ((opline->op2_type & (IS_VAR|IS_TMP_VAR)) && in zend_check_live_ranges()
2111 !zend_is_def_range(opline - 1, opline->op2_type, opline->op2.var)) { in zend_check_live_ranges()
2113 if (opline->opcode == ZEND_OP_DATA) { in zend_check_live_ranges()
2114 if (!zend_is_def_range(opline - 2, opline->op2_type, opline->op2.var)) { in zend_check_live_ranges()
2115 zend_find_live_range(opline-1, opline->op2_type, opline->op2.var); in zend_check_live_ranges()
2117 } else if (opline->opcode == ZEND_FETCH_STATIC_PROP_R || in zend_check_live_ranges()
2118 opline->opcode == ZEND_FETCH_STATIC_PROP_W || in zend_check_live_ranges()
2119 opline->opcode == ZEND_FETCH_STATIC_PROP_RW || in zend_check_live_ranges()
2120 opline->opcode == ZEND_FETCH_STATIC_PROP_IS || in zend_check_live_ranges()
2121 opline->opcode == ZEND_FETCH_STATIC_PROP_FUNC_ARG || in zend_check_live_ranges()
2122 opline->opcode == ZEND_FETCH_STATIC_PROP_UNSET || in zend_check_live_ranges()
2123 opline->opcode == ZEND_UNSET_STATIC_PROP || in zend_check_live_ranges()
2124 opline->opcode == ZEND_ISSET_ISEMPTY_STATIC_PROP || in zend_check_live_ranges()
2125 opline->opcode == ZEND_INSTANCEOF) { in zend_check_live_ranges()
2128 zend_find_live_range(opline, opline->op2_type, opline->op2.var); in zend_check_live_ranges()
2136 zend_op *opline = get_next_op(CG(active_op_array)); in zend_emit_op() local
2137 opline->opcode = opcode; in zend_emit_op()
2140 SET_UNUSED(opline->op1); in zend_emit_op()
2142 SET_NODE(opline->op1, op1); in zend_emit_op()
2146 SET_UNUSED(opline->op2); in zend_emit_op()
2148 SET_NODE(opline->op2, op2); in zend_emit_op()
2151 zend_check_live_ranges(opline); in zend_emit_op()
2154 zend_make_var_result(result, opline); in zend_emit_op()
2156 return opline; in zend_emit_op()
2162 zend_op *opline = get_next_op(CG(active_op_array)); in zend_emit_op_tmp() local
2163 opline->opcode = opcode; in zend_emit_op_tmp()
2166 SET_UNUSED(opline->op1); in zend_emit_op_tmp()
2168 SET_NODE(opline->op1, op1); in zend_emit_op_tmp()
2172 SET_UNUSED(opline->op2); in zend_emit_op_tmp()
2174 SET_NODE(opline->op2, op2); in zend_emit_op_tmp()
2177 zend_check_live_ranges(opline); in zend_emit_op_tmp()
2180 zend_make_tmp_result(result, opline); in zend_emit_op_tmp()
2183 return opline; in zend_emit_op_tmp()
2189 zend_op *opline; in zend_emit_tick() local
2196 opline = get_next_op(CG(active_op_array)); in zend_emit_tick()
2198 opline->opcode = ZEND_TICKS; in zend_emit_tick()
2199 SET_UNUSED(opline->op1); in zend_emit_tick()
2200 SET_UNUSED(opline->op2); in zend_emit_tick()
2201 opline->extended_value = FC(declarables).ticks; in zend_emit_tick()
2214 zend_op *opline = zend_emit_op(NULL, ZEND_JMP, NULL, NULL); in zend_emit_jump() local
2215 opline->op1.opline_num = opnum_target; in zend_emit_jump()
2220 ZEND_API int zend_is_smart_branch(zend_op *opline) /* {{{ */ in zend_is_smart_branch() argument
2222 switch (opline->opcode) { in zend_is_smart_branch()
2249 zend_op *opline; in zend_emit_cond_jump() local
2258 opline = zend_emit_op(NULL, opcode, cond, NULL); in zend_emit_cond_jump()
2259 opline->op2.opline_num = opnum_target; in zend_emit_cond_jump()
2266 zend_op *opline = &CG(active_op_array)->opcodes[opnum_jump]; in zend_update_jump_target() local
2267 switch (opline->opcode) { in zend_update_jump_target()
2269 opline->op1.opline_num = opnum_target; in zend_update_jump_target()
2276 opline->op2.opline_num = opnum_target; in zend_update_jump_target()
2321 zend_op *opline = NULL, *oplines = zend_stack_base(&CG(delayed_oplines_stack)); in zend_delayed_compile_end() local
2326 opline = get_next_op(CG(active_op_array)); in zend_delayed_compile_end()
2327 memcpy(opline, &oplines[i], sizeof(zend_op)); in zend_delayed_compile_end()
2328 zend_check_live_ranges(opline); in zend_delayed_compile_end()
2331 return opline; in zend_delayed_compile_end()
2339 zend_op *opline; in zend_emit_return_type_check() local
2379 opline = zend_emit_op(NULL, ZEND_VERIFY_RETURN_TYPE, expr, NULL); in zend_emit_return_type_check()
2381 opline->result_type = expr->op_type = IS_TMP_VAR; in zend_emit_return_type_check()
2382 opline->result.var = expr->u.op.var = get_temporary_variable(CG(active_op_array)); in zend_emit_return_type_check()
2385 opline->op2.num = CG(active_op_array)->cache_size; in zend_emit_return_type_check()
2388 opline->op2.num = -1; in zend_emit_return_type_check()
2475 static inline void zend_set_class_name_op1(zend_op *opline, znode *class_node) /* {{{ */ in zend_set_class_name_op1() argument
2478 opline->op1_type = IS_CONST; in zend_set_class_name_op1()
2479 opline->op1.constant = zend_add_class_name_literal( in zend_set_class_name_op1()
2482 SET_NODE(opline->op1, class_node); in zend_set_class_name_op1()
2489 zend_op *opline; in zend_compile_class_ref() local
2504 opline = zend_emit_op(result, ZEND_FETCH_CLASS, NULL, NULL); in zend_compile_class_ref()
2505 opline->extended_value = fetch_type | (throw_exception ? ZEND_FETCH_CLASS_EXCEPTION : 0); in zend_compile_class_ref()
2509 opline->op2_type = IS_CONST; in zend_compile_class_ref()
2510 opline->op2.constant = zend_add_class_name_literal(CG(active_op_array), in zend_compile_class_ref()
2518 opline = zend_emit_op(result, ZEND_FETCH_CLASS, NULL, &name_node); in zend_compile_class_ref()
2519opline->extended_value = ZEND_FETCH_CLASS_DEFAULT | (throw_exception ? ZEND_FETCH_CLASS_EXCEPTION … in zend_compile_class_ref()
2522 return opline; in zend_compile_class_ref()
2556 zend_op *opline = zend_emit_op(result, ZEND_FETCH_CLASS, NULL, &name_node); in zend_compile_class_ref_ex() local
2557 opline->extended_value = ZEND_FETCH_CLASS_DEFAULT | fetch_flags; in zend_compile_class_ref_ex()
2609 zend_op *opline; in zend_compile_simple_var_no_cv() local
2617 opline = zend_delayed_emit_op(result, ZEND_FETCH_R, &name_node, NULL); in zend_compile_simple_var_no_cv()
2619 opline = zend_emit_op(result, ZEND_FETCH_R, &name_node, NULL); in zend_compile_simple_var_no_cv()
2625 opline->extended_value = ZEND_FETCH_GLOBAL; in zend_compile_simple_var_no_cv()
2627 opline->extended_value = ZEND_FETCH_LOCAL; in zend_compile_simple_var_no_cv()
2630 return opline; in zend_compile_simple_var_no_cv()
2647 zend_op *opline; in zend_compile_simple_var() local
2650 opline = zend_emit_op(result, ZEND_FETCH_THIS, NULL, NULL); in zend_compile_simple_var()
2651 zend_adjust_for_fetch_type(opline, type); in zend_compile_simple_var()
2653 zend_op *opline = zend_compile_simple_var_no_cv(result, ast, type, delayed); in zend_compile_simple_var() local
2654 zend_adjust_for_fetch_type(opline, type); in zend_compile_simple_var()
2663 zend_op *opline = zend_emit_op(NULL, ZEND_SEPARATE, node, NULL); in zend_separate_if_call_and_write() local
2664 opline->result_type = IS_VAR; in zend_separate_if_call_and_write()
2665 opline->result.var = opline->op1.var; in zend_separate_if_call_and_write()
2728 zend_op *opline = zend_compile_dim_common(result, ast, type); in zend_compile_dim() local
2729 zend_adjust_for_fetch_type(opline, type); in zend_compile_dim()
2739 zend_op *opline; in zend_delayed_compile_prop() local
2749 opline = zend_delayed_emit_op(result, ZEND_FETCH_OBJ_R, &obj_node, &prop_node); in zend_delayed_compile_prop()
2750 if (opline->op2_type == IS_CONST) { in zend_delayed_compile_prop()
2751 convert_to_string(CT_CONSTANT(opline->op2)); in zend_delayed_compile_prop()
2752 zend_alloc_polymorphic_cache_slot(opline->op2.constant); in zend_delayed_compile_prop()
2755 return opline; in zend_delayed_compile_prop()
2769 zend_op *opline = zend_compile_prop_common(result, ast, type); in zend_compile_prop() local
2770 zend_adjust_for_fetch_type(opline, type); in zend_compile_prop()
2780 zend_op *opline; in zend_compile_static_prop_common() local
2787 opline = zend_delayed_emit_op(result, ZEND_FETCH_STATIC_PROP_R, &prop_node, NULL); in zend_compile_static_prop_common()
2789 opline = zend_emit_op(result, ZEND_FETCH_STATIC_PROP_R, &prop_node, NULL); in zend_compile_static_prop_common()
2791 if (opline->op1_type == IS_CONST) { in zend_compile_static_prop_common()
2792 convert_to_string(CT_CONSTANT(opline->op1)); in zend_compile_static_prop_common()
2793 zend_alloc_polymorphic_cache_slot(opline->op1.constant); in zend_compile_static_prop_common()
2796 opline->op2_type = IS_CONST; in zend_compile_static_prop_common()
2797 opline->op2.constant = zend_add_class_name_literal( in zend_compile_static_prop_common()
2800 SET_NODE(opline->op2, &class_node); in zend_compile_static_prop_common()
2803 return opline; in zend_compile_static_prop_common()
2809 zend_op *opline = zend_compile_static_prop_common(result, ast, type, delayed); in zend_compile_static_prop() local
2810 zend_adjust_for_fetch_type(opline, type); in zend_compile_static_prop()
2984 zend_op *opline; in zend_compile_assign() local
3014 opline = zend_delayed_compile_end(offset); in zend_compile_assign()
3015 opline->opcode = ZEND_ASSIGN_DIM; in zend_compile_assign()
3017 opline = zend_emit_op_data(&expr_node); in zend_compile_assign()
3024 opline = zend_delayed_compile_end(offset); in zend_compile_assign()
3025 opline->opcode = ZEND_ASSIGN_OBJ; in zend_compile_assign()
3050 zend_op *opline; in zend_compile_assign_ref() local
3080 opline = zend_emit_op(result, ZEND_ASSIGN_REF, &target_node, &source_node); in zend_compile_assign_ref()
3083 opline->extended_value = ZEND_RETURNS_FUNCTION; in zend_compile_assign_ref()
3103 zend_op *opline; in zend_compile_compound_assign() local
3122 opline = zend_delayed_compile_end(offset); in zend_compile_compound_assign()
3123 opline->opcode = opcode; in zend_compile_compound_assign()
3124 opline->extended_value = ZEND_ASSIGN_DIM; in zend_compile_compound_assign()
3126 opline = zend_emit_op_data(&expr_node); in zend_compile_compound_assign()
3133 opline = zend_delayed_compile_end(offset); in zend_compile_compound_assign()
3134 opline->opcode = opcode; in zend_compile_compound_assign()
3135 opline->extended_value = ZEND_ASSIGN_OBJ; in zend_compile_compound_assign()
3156 zend_op *opline; in zend_compile_args() local
3164 opline = zend_emit_op(NULL, ZEND_SEND_UNPACK, &arg_node, NULL); in zend_compile_args()
3165 opline->op2.num = arg_count; in zend_compile_args()
3166 opline->result.var = (uint32_t)(zend_intptr_t)ZEND_CALL_ARG(NULL, arg_count); in zend_compile_args()
3245 opline = zend_emit_op(NULL, opcode, &arg_node, NULL); in zend_compile_args()
3246 opline->op2.opline_num = arg_num; in zend_compile_args()
3247 opline->result.var = (uint32_t)(zend_intptr_t)ZEND_CALL_ARG(NULL, arg_num); in zend_compile_args()
3282 zend_op *opline; in zend_compile_call_common() local
3291 opline = &CG(active_op_array)->opcodes[opnum_init]; in zend_compile_call_common()
3292 opline->extended_value = arg_count; in zend_compile_call_common()
3294 if (opline->opcode == ZEND_INIT_FCALL) { in zend_compile_call_common()
3295 opline->op1.num = zend_vm_calc_used_stack(arg_count, fbc); in zend_compile_call_common()
3298 call_flags = (opline->opcode == ZEND_NEW ? ZEND_CALL_CTOR : 0); in zend_compile_call_common()
3299 opline = zend_emit_op(result, zend_get_call_op(opline, fbc), NULL, NULL); in zend_compile_call_common()
3300 opline->op1.num = call_flags; in zend_compile_call_common()
3321 zend_op *opline = get_next_op(CG(active_op_array)); in zend_compile_ns_call() local
3322 opline->opcode = ZEND_INIT_NS_FCALL_BY_NAME; in zend_compile_ns_call()
3323 SET_UNUSED(opline->op1); in zend_compile_ns_call()
3324 opline->op2_type = IS_CONST; in zend_compile_ns_call()
3325 opline->op2.constant = zend_add_ns_func_name_literal( in zend_compile_ns_call()
3327 zend_alloc_cache_slot(opline->op2.constant); in zend_compile_ns_call()
3341 zend_op *opline = get_next_op(CG(active_op_array)); in zend_compile_dynamic_call() local
3343 opline->opcode = ZEND_INIT_STATIC_METHOD_CALL; in zend_compile_dynamic_call()
3344 opline->op1_type = IS_CONST; in zend_compile_dynamic_call()
3345 opline->op1.constant = zend_add_class_name_literal(CG(active_op_array), class); in zend_compile_dynamic_call()
3346 opline->op2_type = IS_CONST; in zend_compile_dynamic_call()
3347 opline->op2.constant = zend_add_func_name_literal(CG(active_op_array), method); in zend_compile_dynamic_call()
3348 zend_alloc_cache_slot(opline->op2.constant); in zend_compile_dynamic_call()
3351 zend_op *opline = get_next_op(CG(active_op_array)); in zend_compile_dynamic_call() local
3353 opline->opcode = ZEND_INIT_FCALL_BY_NAME; in zend_compile_dynamic_call()
3354 SET_UNUSED(opline->op1); in zend_compile_dynamic_call()
3355 opline->op2_type = IS_CONST; in zend_compile_dynamic_call()
3356 opline->op2.constant = zend_add_func_name_literal(CG(active_op_array), str); in zend_compile_dynamic_call()
3357 zend_alloc_cache_slot(opline->op2.constant); in zend_compile_dynamic_call()
3404 zend_op *opline; in zend_compile_func_typecheck() local
3411 opline = zend_emit_op_tmp(result, ZEND_TYPE_CHECK, &arg_node, NULL); in zend_compile_func_typecheck()
3412 opline->extended_value = type; in zend_compile_func_typecheck()
3420 zend_op *opline; in zend_compile_func_cast() local
3427 opline = zend_emit_op_tmp(result, ZEND_CAST, &arg_node, NULL); in zend_compile_func_cast()
3428 opline->extended_value = type; in zend_compile_func_cast()
3436 zend_op *opline; in zend_compile_func_defined() local
3456 opline = zend_emit_op_tmp(result, ZEND_DEFINED, NULL, NULL); in zend_compile_func_defined()
3457 opline->op1_type = IS_CONST; in zend_compile_func_defined()
3458 LITERAL_STR(opline->op1, name); in zend_compile_func_defined()
3459 zend_alloc_cache_slot(opline->op1.constant); in zend_compile_func_defined()
3510 zend_op *opline; in zend_try_compile_ct_bound_init_user_func() local
3528 opline = zend_emit_op(NULL, ZEND_INIT_FCALL, NULL, NULL); in zend_try_compile_ct_bound_init_user_func()
3529 opline->extended_value = num_args; in zend_try_compile_ct_bound_init_user_func()
3530 opline->op1.num = zend_vm_calc_used_stack(num_args, fbc); in zend_try_compile_ct_bound_init_user_func()
3531 opline->op2_type = IS_CONST; in zend_try_compile_ct_bound_init_user_func()
3532 LITERAL_STR(opline->op2, lcname); in zend_try_compile_ct_bound_init_user_func()
3533 zend_alloc_cache_slot(opline->op2.constant); in zend_try_compile_ct_bound_init_user_func()
3541 zend_op *opline; in zend_compile_init_user_func() local
3550 opline = zend_emit_op(NULL, ZEND_INIT_USER_CALL, NULL, &name_node); in zend_compile_init_user_func()
3551 opline->op1_type = IS_CONST; in zend_compile_init_user_func()
3552 LITERAL_STR(opline->op1, zend_string_copy(orig_func_name)); in zend_compile_init_user_func()
3553 opline->extended_value = num_args; in zend_compile_init_user_func()
3584 zend_op *opline; in zend_compile_func_cufa() local
3589 opline = zend_emit_op(NULL, ZEND_SEND_ARRAY, &arg_node, &len_node); in zend_compile_func_cufa()
3590 opline->extended_value = Z_LVAL_P(zv); in zend_compile_func_cufa()
3619 zend_op *opline; in zend_compile_func_cuf() local
3623 opline = zend_emit_op(NULL, ZEND_SEND_USER, &arg_node, NULL); in zend_compile_func_cuf()
3624 opline->op2.num = i; in zend_compile_func_cuf()
3625 opline->result.var = (uint32_t)(zend_intptr_t)ZEND_CALL_ARG(NULL, i); in zend_compile_func_cuf()
3637 zend_op *opline; in zend_compile_assert() local
3646 opline = zend_emit_op(NULL, ZEND_INIT_FCALL, NULL, &name_node); in zend_compile_assert()
3648 opline = zend_emit_op(NULL, ZEND_INIT_NS_FCALL_BY_NAME, NULL, NULL); in zend_compile_assert()
3649 opline->op2_type = IS_CONST; in zend_compile_assert()
3650 opline->op2.constant = zend_add_ns_func_name_literal( in zend_compile_assert()
3653 zend_alloc_cache_slot(opline->op2.constant); in zend_compile_assert()
3666 opline = &CG(active_op_array)->opcodes[check_op_number]; in zend_compile_assert()
3667 opline->op2.opline_num = get_next_op_number(CG(active_op_array)); in zend_compile_assert()
3668 SET_NODE(opline->result, result); in zend_compile_assert()
3683 zend_op *opline; in zend_compile_func_in_array() local
3758 opline = zend_emit_op_tmp(result, ZEND_IN_ARRAY, &needly, &array); in zend_compile_func_in_array()
3759 opline->extended_value = strict; in zend_compile_func_in_array()
3982 zend_op *opline; in zend_compile_call() local
4015 opline = zend_emit_op(NULL, ZEND_INIT_FCALL, NULL, &name_node); in zend_compile_call()
4016 zend_alloc_cache_slot(opline->op2.constant); in zend_compile_call()
4030 zend_op *opline; in zend_compile_method_call() local
4040 opline = zend_emit_op(NULL, ZEND_INIT_METHOD_CALL, &obj_node, NULL); in zend_compile_method_call()
4047 opline->op2_type = IS_CONST; in zend_compile_method_call()
4048 opline->op2.constant = zend_add_func_name_literal(CG(active_op_array), in zend_compile_method_call()
4050 zend_alloc_polymorphic_cache_slot(opline->op2.constant); in zend_compile_method_call()
4052 SET_NODE(opline->op2, &method_node); in zend_compile_method_call()
4056 if (opline->op1_type == IS_UNUSED && opline->op2_type == IS_CONST && in zend_compile_method_call()
4058 zend_string *lcname = Z_STR_P(CT_CONSTANT(opline->op2) + 1); in zend_compile_method_call()
4085 zend_op *opline; in zend_compile_static_call() local
4102 opline = get_next_op(CG(active_op_array)); in zend_compile_static_call()
4103 opline->opcode = ZEND_INIT_STATIC_METHOD_CALL; in zend_compile_static_call()
4105 zend_set_class_name_op1(opline, &class_node); in zend_compile_static_call()
4108 opline->op2_type = IS_CONST; in zend_compile_static_call()
4109 opline->op2.constant = zend_add_func_name_literal(CG(active_op_array), in zend_compile_static_call()
4111 if (opline->op1_type == IS_CONST) { in zend_compile_static_call()
4112 zend_alloc_cache_slot(opline->op2.constant); in zend_compile_static_call()
4114 zend_alloc_polymorphic_cache_slot(opline->op2.constant); in zend_compile_static_call()
4117 SET_NODE(opline->op2, &method_node); in zend_compile_static_call()
4119 zend_check_live_ranges(opline); in zend_compile_static_call()
4122 if (opline->op2_type == IS_CONST) { in zend_compile_static_call()
4124 if (opline->op1_type == IS_CONST) { in zend_compile_static_call()
4125 zend_string *lcname = Z_STR_P(CT_CONSTANT(opline->op1) + 1); in zend_compile_static_call()
4131 } else if (opline->op1_type == IS_UNUSED in zend_compile_static_call()
4132 && (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF in zend_compile_static_call()
4137 zend_string *lcname = Z_STR_P(CT_CONSTANT(opline->op2) + 1); in zend_compile_static_call()
4162 zend_op *opline; in zend_compile_new() local
4169 opline = &CG(active_op_array)->opcodes[dcl_opnum]; in zend_compile_new()
4170 if (opline->opcode == ZEND_FETCH_CLASS) { in zend_compile_new()
4171 opline++; in zend_compile_new()
4173 class_node.op_type = opline->result_type; in zend_compile_new()
4174 class_node.u.op.var = opline->result.var; in zend_compile_new()
4175 opline->extended_value = get_next_op_number(CG(active_op_array)); in zend_compile_new()
4181 opline = zend_emit_op(result, ZEND_NEW, NULL, NULL); in zend_compile_new()
4184 opline->op1_type = IS_CONST; in zend_compile_new()
4185 opline->op1.constant = zend_add_class_name_literal( in zend_compile_new()
4188 SET_NODE(opline->op1, &class_node); in zend_compile_new()
4196 opline = &CG(active_op_array)->opcodes[opnum]; in zend_compile_new()
4197 opline->op2.opline_num = get_next_op_number(CG(active_op_array)); in zend_compile_new()
4227 zend_op *opline = zend_emit_op(NULL, ZEND_BIND_GLOBAL, &result, &name_node); in zend_compile_global_var() local
4228 zend_alloc_cache_slot(opline->op2.constant); in zend_compile_global_var()
4233 zend_op *opline = zend_emit_op(&result, ZEND_FETCH_W, &name_node, NULL); in zend_compile_global_var() local
4234 opline->extended_value = ZEND_FETCH_GLOBAL_LOCK; in zend_compile_global_var()
4251 zend_op *opline; in zend_compile_static_var_common() local
4275 opline = zend_emit_op(NULL, ZEND_BIND_STATIC, NULL, &var_node); in zend_compile_static_var_common()
4276 opline->op1_type = IS_CV; in zend_compile_static_var_common()
4277 opline->op1.var = lookup_cv(CG(active_op_array), zend_string_copy(Z_STR(var_node.u.constant))); in zend_compile_static_var_common()
4278 opline->extended_value = by_ref; in zend_compile_static_var_common()
4302 zend_op *opline; in zend_compile_unset() local
4311 opline = zend_emit_op(NULL, ZEND_UNSET_CV, &var_node, NULL); in zend_compile_unset()
4313 opline = zend_compile_simple_var_no_cv(NULL, var_ast, BP_VAR_UNSET, 0); in zend_compile_unset()
4314 opline->opcode = ZEND_UNSET_VAR; in zend_compile_unset()
4318 opline = zend_compile_dim_common(NULL, var_ast, BP_VAR_UNSET); in zend_compile_unset()
4319 opline->opcode = ZEND_UNSET_DIM; in zend_compile_unset()
4322 opline = zend_compile_prop_common(NULL, var_ast, BP_VAR_UNSET); in zend_compile_unset()
4323 opline->opcode = ZEND_UNSET_OBJ; in zend_compile_unset()
4326 opline = zend_compile_static_prop_common(NULL, var_ast, BP_VAR_UNSET, 0); in zend_compile_unset()
4327 opline->opcode = ZEND_UNSET_STATIC_PROP; in zend_compile_unset()
4345 zend_op *opline = get_next_op(CG(active_op_array)); in zend_handle_loops_and_finally_ex() local
4347 opline->opcode = ZEND_FAST_CALL; in zend_handle_loops_and_finally_ex()
4348 opline->result_type = IS_TMP_VAR; in zend_handle_loops_and_finally_ex()
4349 opline->result.var = loop_var->var_num; in zend_handle_loops_and_finally_ex()
4350 SET_UNUSED(opline->op1); in zend_handle_loops_and_finally_ex()
4352 SET_NODE(opline->op2, return_value); in zend_handle_loops_and_finally_ex()
4354 SET_UNUSED(opline->op2); in zend_handle_loops_and_finally_ex()
4356 opline->op1.num = loop_var->u.try_catch_offset; in zend_handle_loops_and_finally_ex()
4358 zend_op *opline = get_next_op(CG(active_op_array)); in zend_handle_loops_and_finally_ex() local
4359 opline->opcode = ZEND_DISCARD_EXCEPTION; in zend_handle_loops_and_finally_ex()
4360 opline->op1_type = IS_TMP_VAR; in zend_handle_loops_and_finally_ex()
4361 opline->op1.var = loop_var->var_num; in zend_handle_loops_and_finally_ex()
4362 SET_UNUSED(opline->op2); in zend_handle_loops_and_finally_ex()
4372 zend_op *opline; in zend_handle_loops_and_finally_ex() local
4375 opline = get_next_op(CG(active_op_array)); in zend_handle_loops_and_finally_ex()
4376 opline->opcode = loop_var->opcode; in zend_handle_loops_and_finally_ex()
4377 opline->op1_type = loop_var->var_type; in zend_handle_loops_and_finally_ex()
4378 opline->op1.var = loop_var->var_num; in zend_handle_loops_and_finally_ex()
4379 SET_UNUSED(opline->op2); in zend_handle_loops_and_finally_ex()
4380 opline->op2.num = loop_var->u.live_range_offset; in zend_handle_loops_and_finally_ex()
4381 opline->extended_value = ZEND_FREE_ON_RETURN; in zend_handle_loops_and_finally_ex()
4434 zend_op *opline; in zend_compile_return() local
4469 opline = zend_emit_op(NULL, by_ref ? ZEND_RETURN_BY_REF : ZEND_RETURN, in zend_compile_return()
4474 opline->extended_value = ZEND_RETURNS_FUNCTION; in zend_compile_return()
4476 opline->extended_value = ZEND_RETURNS_VALUE; in zend_compile_return()
4484 zend_op *opline; in zend_compile_echo() local
4490 opline = zend_emit_op(NULL, ZEND_ECHO, &expr_node, NULL); in zend_compile_echo()
4491 opline->extended_value = 0; in zend_compile_echo()
4510 zend_op *opline; in zend_compile_break_continue() local
4543 opline = zend_emit_op(NULL, ast->kind == ZEND_AST_BREAK ? ZEND_BRK : ZEND_CONT, NULL, NULL); in zend_compile_break_continue()
4544 opline->op1.num = CG(context).current_brk_cont; in zend_compile_break_continue()
4545 opline->op2.num = depth; in zend_compile_break_continue()
4549 void zend_resolve_goto_label(zend_op_array *op_array, zend_op *opline) /* {{{ */ in zend_resolve_goto_label() argument
4552 int current, remove_oplines = opline->op1.num; in zend_resolve_goto_label()
4554 uint32_t opnum = opline - op_array->opcodes; in zend_resolve_goto_label()
4556 label = CT_CONSTANT_EX(op_array, opline->op2.constant); in zend_resolve_goto_label()
4562 CG(zend_lineno) = opline->lineno; in zend_resolve_goto_label()
4569 current = opline->extended_value; in zend_resolve_goto_label()
4574 CG(zend_lineno) = opline->lineno; in zend_resolve_goto_label()
4594 opline->opcode = ZEND_JMP; in zend_resolve_goto_label()
4595 opline->op1.opline_num = dest->opline_num; in zend_resolve_goto_label()
4596 opline->extended_value = 0; in zend_resolve_goto_label()
4597 SET_UNUSED(opline->op1); in zend_resolve_goto_label()
4598 SET_UNUSED(opline->op2); in zend_resolve_goto_label()
4599 SET_UNUSED(opline->result); in zend_resolve_goto_label()
4603 opline--; in zend_resolve_goto_label()
4604 MAKE_NOP(opline); in zend_resolve_goto_label()
4605 ZEND_VM_SET_OPCODE_HANDLER(opline); in zend_resolve_goto_label()
4614 zend_op *opline; in zend_compile_goto() local
4621 opline = zend_emit_op(NULL, ZEND_GOTO, NULL, &label_node); in zend_compile_goto()
4622 opline->op1.num = get_next_op_number(CG(active_op_array)) - opnum_start - 1; in zend_compile_goto()
4623 opline->extended_value = CG(context).current_brk_cont; in zend_compile_goto()
4759 zend_op *opline; in zend_compile_foreach() local
4786 opline = zend_emit_op(&reset_node, by_ref ? ZEND_FE_RESET_RW : ZEND_FE_RESET_R, &expr_node, NULL); in zend_compile_foreach()
4791 opline = zend_emit_op(NULL, by_ref ? ZEND_FE_FETCH_RW : ZEND_FE_FETCH_R, &reset_node, NULL); in zend_compile_foreach()
4797 SET_NODE(opline->op2, &value_node); in zend_compile_foreach()
4799 opline->op2_type = IS_VAR; in zend_compile_foreach()
4800 opline->op2.var = get_temporary_variable(CG(active_op_array)); in zend_compile_foreach()
4801 GET_NODE(&value_node, opline->op2); in zend_compile_foreach()
4810 opline = &CG(active_op_array)->opcodes[opnum_fetch]; in zend_compile_foreach()
4811 zend_make_tmp_result(&key_node, opline); in zend_compile_foreach()
4823 opline = &CG(active_op_array)->opcodes[opnum_reset]; in zend_compile_foreach()
4824 opline->op2.opline_num = get_next_op_number(CG(active_op_array)); in zend_compile_foreach()
4826 opline = &CG(active_op_array)->opcodes[opnum_fetch]; in zend_compile_foreach()
4827 opline->extended_value = get_next_op_number(CG(active_op_array)); in zend_compile_foreach()
4831 opline = zend_emit_op(NULL, ZEND_FE_FREE, &reset_node, NULL); in zend_compile_foreach()
4942 zend_op *opline; in zend_compile_switch() local
4963 opline = zend_emit_op(NULL, in zend_compile_switch()
4966 if (opline->op1_type == IS_CONST) { in zend_compile_switch()
4967 zval_copy_ctor(CT_CONSTANT(opline->op1)); in zend_compile_switch()
4969 opnum_switch = opline - CG(active_op_array)->opcodes; in zend_compile_switch()
4997 opline = zend_emit_op(NULL, ZEND_CASE, &expr_node, &cond_node); in zend_compile_switch()
4998 SET_NODE(opline->result, &case_node); in zend_compile_switch()
4999 if (opline->op1_type == IS_CONST) { in zend_compile_switch()
5000 zval_copy_ctor(CT_CONSTANT(opline->op1)); in zend_compile_switch()
5034 opline = &CG(active_op_array)->opcodes[opnum_switch]; in zend_compile_switch()
5035 opline->extended_value = get_next_op_number(CG(active_op_array)); in zend_compile_switch()
5046 opline = &CG(active_op_array)->opcodes[opnum_switch]; in zend_compile_switch()
5047 opline->extended_value = get_next_op_number(CG(active_op_array)); in zend_compile_switch()
5055 opline = get_next_op(CG(active_op_array)); in zend_compile_switch()
5056 opline->opcode = ZEND_FREE; in zend_compile_switch()
5057 SET_NODE(opline->op1, &expr_node); in zend_compile_switch()
5058 SET_UNUSED(opline->op2); in zend_compile_switch()
5074 zend_op *opline; in zend_compile_try() local
5147 opline = get_next_op(CG(active_op_array)); in zend_compile_try()
5148 opline->opcode = ZEND_CATCH; in zend_compile_try()
5149 opline->op1_type = IS_CONST; in zend_compile_try()
5150 opline->op1.constant = zend_add_class_name_literal(CG(active_op_array), in zend_compile_try()
5157 opline->op2_type = IS_CV; in zend_compile_try()
5158 opline->op2.var = lookup_cv(CG(active_op_array), zend_string_copy(Z_STR_P(var_name))); in zend_compile_try()
5160 opline->result.num = is_last_catch && is_last_class; in zend_compile_try()
5164 opline = &CG(active_op_array)->opcodes[opnum_catch]; in zend_compile_try()
5165 opline->extended_value = get_next_op_number(CG(active_op_array)); in zend_compile_try()
5181 opline = &CG(active_op_array)->opcodes[opnum_catch]; in zend_compile_try()
5183 opline->extended_value = get_next_op_number(CG(active_op_array)); in zend_compile_try()
5206 opline = zend_emit_op(NULL, ZEND_FAST_CALL, NULL, NULL); in zend_compile_try()
5207 opline->op1.num = try_catch_offset; in zend_compile_try()
5208 opline->result_type = IS_TMP_VAR; in zend_compile_try()
5209 opline->result.var = CG(context).fast_call_var; in zend_compile_try()
5219 opline = zend_emit_op(NULL, ZEND_FAST_RET, NULL, NULL); in zend_compile_try()
5220 opline->op1_type = IS_TMP_VAR; in zend_compile_try()
5221 opline->op1.var = CG(context).fast_call_var; in zend_compile_try()
5222 opline->op2.num = orig_try_catch_offset; in zend_compile_try()
5487 zend_op *opline; in zend_compile_params() local
5532 opline = zend_emit_op(NULL, opcode, NULL, &default_node); in zend_compile_params()
5533 SET_NODE(opline->result, &var_node); in zend_compile_params()
5534 opline->op1.num = i + 1; in zend_compile_params()
5613 if (opline->opcode == ZEND_RECV_INIT) { in zend_compile_params()
5615 zend_alloc_cache_slot(opline->op2.constant); in zend_compile_params()
5617 Z_CACHE_SLOT(op_array->literals[opline->op2.constant]) = -1; in zend_compile_params()
5621 opline->op2.num = op_array->cache_size; in zend_compile_params()
5624 opline->op2.num = -1; in zend_compile_params()
5628 if (opline->opcode == ZEND_RECV_INIT) { in zend_compile_params()
5629 Z_CACHE_SLOT(op_array->literals[opline->op2.constant]) = -1; in zend_compile_params()
5631 opline->op2.num = -1; in zend_compile_params()
5657 zend_op *opline; in zend_compile_closure_binding() local
5667 opline = zend_emit_op(NULL, ZEND_BIND_LEXICAL, closure, NULL); in zend_compile_closure_binding()
5668 opline->op2_type = IS_CV; in zend_compile_closure_binding()
5669 opline->op2.var = lookup_cv(CG(active_op_array), zend_string_copy(var_name)); in zend_compile_closure_binding()
5670 opline->extended_value = by_ref; in zend_compile_closure_binding()
5883 zend_op *opline; in zend_begin_func_decl() local
5912 opline = zend_emit_op_tmp(result, ZEND_DECLARE_LAMBDA_FUNCTION, NULL, NULL); in zend_begin_func_decl()
5913 opline->op1_type = IS_CONST; in zend_begin_func_decl()
5914 LITERAL_STR(opline->op1, key); in zend_begin_func_decl()
5916 opline = get_next_op(CG(active_op_array)); in zend_begin_func_decl()
5917 opline->opcode = ZEND_DECLARE_FUNCTION; in zend_begin_func_decl()
5918 opline->op1_type = IS_CONST; in zend_begin_func_decl()
5919 LITERAL_STR(opline->op1, zend_string_copy(lcname)); in zend_begin_func_decl()
5922 SET_UNUSED(opline->op2); in zend_begin_func_decl()
6188 zend_op *opline; in zend_compile_use_trait() local
6209 opline = get_next_op(CG(active_op_array)); in zend_compile_use_trait()
6210 opline->opcode = ZEND_ADD_TRAIT; in zend_compile_use_trait()
6211 SET_NODE(opline->op1, &FC(implementing_class)); in zend_compile_use_trait()
6212 opline->op2_type = IS_CONST; in zend_compile_use_trait()
6213 opline->op2.constant = zend_add_class_name_literal(CG(active_op_array), in zend_compile_use_trait()
6246 zend_op *opline; in zend_compile_implements() local
6253 opline = zend_emit_op(NULL, ZEND_ADD_INTERFACE, class_node, NULL); in zend_compile_implements()
6254 opline->op2_type = IS_CONST; in zend_compile_implements()
6255 opline->op2.constant = zend_add_class_name_literal(CG(active_op_array), in zend_compile_implements()
6285 zend_op *opline; in zend_compile_class_decl() local
6349 opline = get_next_op(CG(active_op_array)); in zend_compile_class_decl()
6350 zend_make_var_result(&declare_node, opline); in zend_compile_class_decl()
6352 GET_NODE(&FC(implementing_class), opline->result); in zend_compile_class_decl()
6354 opline->op1_type = IS_CONST; in zend_compile_class_decl()
6355 LITERAL_STR(opline->op1, lcname); in zend_compile_class_decl()
6359 opline->opcode = ZEND_DECLARE_ANON_INHERITED_CLASS; in zend_compile_class_decl()
6360 SET_NODE(opline->op2, &extends_node); in zend_compile_class_decl()
6362 opline->opcode = ZEND_DECLARE_ANON_CLASS; in zend_compile_class_decl()
6387 opline = zend_emit_op(NULL, ZEND_ADD_INTERFACE, &declare_node, NULL); in zend_compile_class_decl()
6388 opline->op2_type = IS_CONST; in zend_compile_class_decl()
6389 opline->op2.constant = zend_add_class_name_literal(CG(active_op_array), in zend_compile_class_decl()
6400 opline->opcode = ZEND_DECLARE_INHERITED_CLASS; in zend_compile_class_decl()
6401 SET_NODE(opline->op2, &extends_node); in zend_compile_class_decl()
6403 opline->opcode = ZEND_DECLARE_CLASS; in zend_compile_class_decl()
6404 SET_UNUSED(opline->op2); in zend_compile_class_decl()
7238 zend_op *opline = zend_compile_prop_common(NULL, var_ast, BP_VAR_RW); in zend_compile_post_incdec() local
7239 opline->opcode = ast->kind == ZEND_AST_POST_INC ? ZEND_POST_INC_OBJ : ZEND_POST_DEC_OBJ; in zend_compile_post_incdec()
7240 zend_make_tmp_result(result, opline); in zend_compile_post_incdec()
7258 zend_op *opline = zend_compile_prop_common(result, var_ast, BP_VAR_RW); in zend_compile_pre_incdec() local
7259 opline->opcode = ast->kind == ZEND_AST_PRE_INC ? ZEND_PRE_INC_OBJ : ZEND_PRE_DEC_OBJ; in zend_compile_pre_incdec()
7273 zend_op *opline; in zend_compile_cast() local
7277 opline = zend_emit_op_tmp(result, ZEND_CAST, &expr_node, NULL); in zend_compile_cast()
7278 opline->extended_value = ast->attr; in zend_compile_cast()
7353 zend_op *opline; in zend_compile_coalesce() local
7363 opline = zend_emit_op_tmp(NULL, ZEND_QM_ASSIGN, &default_node, NULL); in zend_compile_coalesce()
7364 SET_NODE(opline->result, result); in zend_compile_coalesce()
7366 opline = &CG(active_op_array)->opcodes[opnum]; in zend_compile_coalesce()
7367 opline->op2.opline_num = get_next_op_number(CG(active_op_array)); in zend_compile_coalesce()
7373 zend_op *opline; in zend_compile_print() local
7379 opline = zend_emit_op(NULL, ZEND_ECHO, &expr_node, NULL); in zend_compile_print()
7380 opline->extended_value = 1; in zend_compile_print()
7411 zend_op *opline; in zend_compile_yield() local
7430 opline = zend_emit_op(result, ZEND_YIELD, value_node_ptr, key_node_ptr); in zend_compile_yield()
7433 opline->extended_value = ZEND_RETURNS_FUNCTION; in zend_compile_yield()
7461 zend_op *opline; in zend_compile_instanceof() local
7472 opline = zend_emit_op_tmp(result, ZEND_INSTANCEOF, &obj_node, NULL); in zend_compile_instanceof()
7475 opline->op2_type = IS_CONST; in zend_compile_instanceof()
7476 opline->op2.constant = zend_add_class_name_literal( in zend_compile_instanceof()
7479 SET_NODE(opline->op2, &class_node); in zend_compile_instanceof()
7488 zend_op *opline; in zend_compile_include_or_eval() local
7493 opline = zend_emit_op(result, ZEND_INCLUDE_OR_EVAL, &expr_node, NULL); in zend_compile_include_or_eval()
7494 opline->extended_value = ast->attr; in zend_compile_include_or_eval()
7505 zend_op *opline = NULL; in zend_compile_isset_or_empty() local
7525 opline = zend_emit_op(result, ZEND_ISSET_ISEMPTY_THIS, NULL, NULL); in zend_compile_isset_or_empty()
7527 opline = zend_emit_op(result, ZEND_ISSET_ISEMPTY_CV, &var_node, NULL); in zend_compile_isset_or_empty()
7529 opline = zend_compile_simple_var_no_cv(result, var_ast, BP_VAR_IS, 0); in zend_compile_isset_or_empty()
7530 opline->opcode = ZEND_ISSET_ISEMPTY_VAR; in zend_compile_isset_or_empty()
7534 opline = zend_compile_dim_common(result, var_ast, BP_VAR_IS); in zend_compile_isset_or_empty()
7535 opline->opcode = ZEND_ISSET_ISEMPTY_DIM_OBJ; in zend_compile_isset_or_empty()
7538 opline = zend_compile_prop_common(result, var_ast, BP_VAR_IS); in zend_compile_isset_or_empty()
7539 opline->opcode = ZEND_ISSET_ISEMPTY_PROP_OBJ; in zend_compile_isset_or_empty()
7542 opline = zend_compile_static_prop_common(result, var_ast, BP_VAR_IS, 0); in zend_compile_isset_or_empty()
7543 opline->opcode = ZEND_ISSET_ISEMPTY_STATIC_PROP; in zend_compile_isset_or_empty()
7548 result->op_type = opline->result_type = IS_TMP_VAR; in zend_compile_isset_or_empty()
7549 opline->extended_value |= ast->kind == ZEND_AST_ISSET ? ZEND_ISSET : ZEND_ISEMPTY; in zend_compile_isset_or_empty()
7600 zend_op *opline; in zend_compile_array() local
7641 opline = zend_emit_op_tmp(result, ZEND_INIT_ARRAY, &value_node, key_node_ptr); in zend_compile_array()
7642 opline->extended_value = list->children << ZEND_ARRAY_SIZE_SHIFT; in zend_compile_array()
7644 opline = zend_emit_op(NULL, ZEND_ADD_ARRAY_ELEMENT, in zend_compile_array()
7646 SET_NODE(opline->result, result); in zend_compile_array()
7648 opline->extended_value |= by_ref; in zend_compile_array()
7658 opline = &CG(active_op_array)->opcodes[opnum_init]; in zend_compile_array()
7659 opline->extended_value |= ZEND_ARRAY_NOT_PACKED; in zend_compile_array()
7668 zend_op *opline; in zend_compile_const() local
7698 opline = zend_emit_op_tmp(result, ZEND_FETCH_CONSTANT, NULL, NULL); in zend_compile_const()
7699 opline->op2_type = IS_CONST; in zend_compile_const()
7702 opline->op2.constant = zend_add_const_name_literal( in zend_compile_const()
7705 opline->extended_value = IS_CONSTANT_UNQUALIFIED; in zend_compile_const()
7707 opline->extended_value |= IS_CONSTANT_IN_NAMESPACE; in zend_compile_const()
7708 opline->op2.constant = zend_add_const_name_literal( in zend_compile_const()
7711 opline->op2.constant = zend_add_const_name_literal( in zend_compile_const()
7715 zend_alloc_cache_slot(opline->op2.constant); in zend_compile_const()
7725 zend_op *opline; in zend_compile_class_const() local
7729 zend_op *opline = zend_emit_op_tmp(result, ZEND_FETCH_CLASS_NAME, NULL, NULL); in zend_compile_class_const() local
7730 opline->extended_value = zend_get_class_fetch_type(zend_ast_get_str(class_ast)); in zend_compile_class_const()
7763 opline = zend_emit_op_tmp(result, ZEND_FETCH_CLASS_CONSTANT, NULL, &const_node); in zend_compile_class_const()
7765 zend_set_class_name_op1(opline, &class_node); in zend_compile_class_const()
7767 if (opline->op1_type == IS_CONST) { in zend_compile_class_const()
7768 zend_alloc_cache_slot(opline->op2.constant); in zend_compile_class_const()
7770 zend_alloc_polymorphic_cache_slot(opline->op2.constant); in zend_compile_class_const()
7787 zend_op *opline = zend_emit_op_tmp(result, ZEND_FETCH_CLASS_NAME, NULL, NULL); in zend_compile_resolve_class_name() local
7788 opline->extended_value = fetch_type; in zend_compile_resolve_class_name()
7794 zend_op *opline = zend_emit_op_tmp(result, ZEND_FETCH_CLASS_NAME, NULL, NULL); in zend_compile_resolve_class_name() local
7795 opline->extended_value = fetch_type; in zend_compile_resolve_class_name()
7809 zend_op *opline = get_next_op(CG(active_op_array)); in zend_compile_rope_add() local
7814 opline->opcode = ZEND_ROPE_INIT; in zend_compile_rope_add()
7815 SET_UNUSED(opline->op1); in zend_compile_rope_add()
7817 opline->opcode = ZEND_ROPE_ADD; in zend_compile_rope_add()
7818 SET_NODE(opline->op1, result); in zend_compile_rope_add()
7820 SET_NODE(opline->op2, elem_node); in zend_compile_rope_add()
7821 SET_NODE(opline->result, result); in zend_compile_rope_add()
7822 opline->extended_value = num; in zend_compile_rope_add()
7823 return opline; in zend_compile_rope_add()
7831 zend_op *opline = NULL, *init_opline; in zend_compile_encaps_list() local
7863 opline = zend_compile_rope_add(result, j++, &elem_node); in zend_compile_encaps_list()
7877 opline = zend_compile_rope_add(result, j++, &last_const_node); in zend_compile_encaps_list()
7881 if (opline->op2_type == IS_CONST) { in zend_compile_encaps_list()
7882 GET_NODE(result, opline->op2); in zend_compile_encaps_list()
7883 MAKE_NOP(opline); in zend_compile_encaps_list()
7885 opline->opcode = ZEND_CAST; in zend_compile_encaps_list()
7886 opline->extended_value = IS_STRING; in zend_compile_encaps_list()
7887 opline->op1_type = opline->op2_type; in zend_compile_encaps_list()
7888 opline->op1 = opline->op2; in zend_compile_encaps_list()
7889 opline->result_type = IS_TMP_VAR; in zend_compile_encaps_list()
7890 opline->result.var = get_temporary_variable(CG(active_op_array)); in zend_compile_encaps_list()
7891 SET_UNUSED(opline->op2); in zend_compile_encaps_list()
7892 GET_NODE(result, opline->result); in zend_compile_encaps_list()
7895 opline->opcode = ZEND_FAST_CONCAT; in zend_compile_encaps_list()
7896 opline->extended_value = 0; in zend_compile_encaps_list()
7897 opline->op1_type = init_opline->op2_type; in zend_compile_encaps_list()
7898 opline->op1 = init_opline->op2; in zend_compile_encaps_list()
7899 opline->result_type = IS_TMP_VAR; in zend_compile_encaps_list()
7900 opline->result.var = get_temporary_variable(CG(active_op_array)); in zend_compile_encaps_list()
7902 GET_NODE(result, opline->result); in zend_compile_encaps_list()
7908 opline->opcode = ZEND_ROPE_END; in zend_compile_encaps_list()
7909 opline->result.var = get_temporary_variable(CG(active_op_array)); in zend_compile_encaps_list()
7910 var = opline->op1.var = get_temporary_variable(CG(active_op_array)); in zend_compile_encaps_list()
7911 GET_NODE(result, opline->result); in zend_compile_encaps_list()
7920 zend_end_live_range(CG(active_op_array), range, opline - CG(active_op_array)->opcodes, in zend_compile_encaps_list()
7924 while (opline != init_opline) { in zend_compile_encaps_list()
7925 opline--; in zend_compile_encaps_list()
7926 if (opline->opcode == ZEND_ROPE_ADD && in zend_compile_encaps_list()
7927 opline->result.var == (uint32_t)-1) { in zend_compile_encaps_list()
7928 opline->op1.var = var; in zend_compile_encaps_list()
7929 opline->result.var = var; in zend_compile_encaps_list()
7930 } else if (opline->opcode == ZEND_ROPE_INIT && in zend_compile_encaps_list()
7931 opline->result.var == (uint32_t)-1) { in zend_compile_encaps_list()
7932 opline->result.var = var; in zend_compile_encaps_list()
7941 zend_op *opline; in zend_compile_magic_const() local
7952 opline = zend_emit_op_tmp(result, ZEND_FETCH_CLASS_NAME, NULL, NULL); in zend_compile_magic_const()
7953 opline->extended_value = ZEND_FETCH_CLASS_SELF; in zend_compile_magic_const()
8420 zend_op *opline; in zend_delayed_compile_var() local
8426 opline = zend_delayed_compile_dim(result, ast, type); in zend_delayed_compile_var()
8427 zend_adjust_for_fetch_type(opline, type); in zend_delayed_compile_var()
8430 opline = zend_delayed_compile_prop(result, ast, type); in zend_delayed_compile_var()
8431 zend_adjust_for_fetch_type(opline, type); in zend_delayed_compile_var()