/php-src/ |
H A D | .gdbinit | 138 printf "%s:%d ", (char*)$func->op_array.filename->val, $ex->opline->lineno 587 usage: printzn &opline->op1 592 printzn &execute_data->opline.op1 594 printzn &execute_data->opline.op2 596 printzn &execute_data->opline.result 600 dump operands of the current opline
|
/php-src/Zend/Optimizer/ |
H A D | block_pass.c | 63 #define SET_VAR_SOURCE(opline) Tsource[VAR_NUM(opline->result.var)] = opline argument 161 COPY_NODE(opline->result, opline->op1); in zend_optimize_block() 453 COPY_NODE(opline->op1, opline->op2); in zend_optimize_block() 615 COPY_NODE(opline->op1, opline->op2); in zend_optimize_block() 626 opline->opcode = INV_COND(opline->opcode); in zend_optimize_block() 761 COPY_NODE(opline->op1, opline->op2); in zend_optimize_block() 901 if (opline->op1_type == opline->result_type && in zend_optimize_block() 902 opline->op1.var == opline->result.var) { in zend_optimize_block() 931 opline++; in zend_optimize_block() 1093 opline->op2.num = map[opline->op2.num]; in assemble_code_blocks() [all …]
|
H A D | compact_literals.c | 290 opline++; in zend_optimizer_compact_literals() 494 opline->op1.constant = map[opline->op1.constant]; in zend_optimizer_compact_literals() 497 opline->op2.constant = map[opline->op2.constant]; in zend_optimizer_compact_literals() 606 opline->result.num = func_slot[opline->op2.constant]; in zend_optimizer_compact_literals() 610 func_slot[opline->op2.constant] = opline->result.num; in zend_optimizer_compact_literals() 644 opline->result.num = class_slot[opline->op1.constant]; in zend_optimizer_compact_literals() 648 class_slot[opline->op1.constant] = opline->result.num; in zend_optimizer_compact_literals() 741 opline->op2.num = class_slot[opline->op1.constant]; in zend_optimizer_compact_literals() 745 class_slot[opline->op1.constant] = opline->op2.num; in zend_optimizer_compact_literals() 792 opline++; in zend_optimizer_compact_literals() [all …]
|
H A D | compact_vars.c | 37 zend_op *opline = &op_array->opcodes[i]; in zend_optimizer_compact_vars() local 38 if (opline->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) { in zend_optimizer_compact_vars() 41 if (opline->op2_type & (IS_CV|IS_VAR|IS_TMP_VAR)) { in zend_optimizer_compact_vars() 44 if (opline->result_type & (IS_CV|IS_VAR|IS_TMP_VAR)) { in zend_optimizer_compact_vars() 46 if (opline->opcode == ZEND_ROPE_INIT) { in zend_optimizer_compact_vars() 85 zend_op *opline = &op_array->opcodes[i]; in zend_optimizer_compact_vars() local 86 if (opline->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) { in zend_optimizer_compact_vars() 87 opline->op1.var = NUM_VAR(vars_map[VAR_NUM(opline->op1.var)]); in zend_optimizer_compact_vars() 89 if (opline->op2_type & (IS_CV|IS_VAR|IS_TMP_VAR)) { in zend_optimizer_compact_vars() 90 opline->op2.var = NUM_VAR(vars_map[VAR_NUM(opline->op2.var)]); in zend_optimizer_compact_vars() [all …]
|
H A D | dce.c | 78 switch (opline->opcode) { in may_have_side_effects() 132 if ((opline->op1_type & (IS_VAR|IS_TMP_VAR)) && (opline->op2_type & (IS_VAR|IS_TMP_VAR))) { in may_have_side_effects() 190 if (opline->op2_type != IS_CONST in may_have_side_effects() 228 opline++; in may_have_side_effects() 230 if (opline->op1_type != IS_CONST in may_have_side_effects() 255 if ((opline->extended_value & ZEND_BIND_REF) && opline->op2_type != IS_UNUSED) { in may_have_side_effects() 397 switch (opline->opcode) { in is_free_of_live_var() 418 if (opline->opcode == ZEND_NOP) { in dce_instr() 430 && opline->opcode != ZEND_CASE && opline->opcode != ZEND_CASE_STRICT) { in dce_instr() 454 opline->opcode = ZEND_FREE; in dce_instr() [all …]
|
H A D | dfa_pass.c | 791 COPY_NODE(opline->op1, opline->op2); in zend_dfa_optimize_jmps() 817 COPY_NODE(opline->op1, opline->op2); in zend_dfa_optimize_jmps() 903 COPY_NODE(opline->op1, opline->op2); in zend_dfa_optimize_jmps() 919 COPY_NODE(opline->op1, opline->op2); in zend_dfa_optimize_jmps() 1212 opline->op1.var = opline->op2.var; in zend_dfa_optimize_op_array() 1234 opline->op1.var = opline->op2.var; in zend_dfa_optimize_op_array() 1279 opline->op2.var = opline->op1.var; in zend_dfa_optimize_op_array() 1630 opline->result.var = opline->op1.var; in zend_dfa_optimize_op_array() 1631 opline->op1_type = opline->op2_type; in zend_dfa_optimize_op_array() 1632 opline->op1.var = opline->op2.var; in zend_dfa_optimize_op_array() [all …]
|
H A D | escape_analysis.c | 156 switch (opline->opcode) { in is_allocation_def() 162 script, op_array, opline); in is_allocation_def() 198 switch (opline->opcode) { in is_allocation_def() 227 switch (opline->opcode) { in is_local_def() 236 script, op_array, opline); in is_local_def() 252 switch (opline->opcode) { in is_local_def() 277 switch (opline->opcode) { in is_escape_use() 330 opline--; in is_escape_use() 346 switch (opline->opcode) { in is_escape_use() 354 if (opline->op2_type == IS_CV || opline->result_type != IS_UNUSED) { in is_escape_use() [all …]
|
H A D | nop_removal.c | 35 zend_op *end, *opline; in zend_optimizer_nop_removal() local 44 for (opline = op_array->opcodes; opline < end; opline++) { in zend_optimizer_nop_removal() 47 if (opline->opcode == ZEND_JMP && ZEND_OP1_JMP_ADDR(opline) > op_array->opcodes + i) { in zend_optimizer_nop_removal() 49 zend_op *target = ZEND_OP1_JMP_ADDR(opline) - 1; in zend_optimizer_nop_removal() 54 if (target == opline) { in zend_optimizer_nop_removal() 56 opline->opcode = ZEND_NOP; in zend_optimizer_nop_removal() 61 if (opline->opcode == ZEND_NOP) { in zend_optimizer_nop_removal() 67 *new_opline = *opline; in zend_optimizer_nop_removal() 68 zend_optimizer_migrate_jump(op_array, new_opline, opline); in zend_optimizer_nop_removal() 79 for (opline = op_array->opcodes; opline<end; opline++) { in zend_optimizer_nop_removal() [all …]
|
H A D | optimize_func_calls.c | 33 zend_op *opline; member 45 switch (opline->opcode) { in zend_delete_call_instructions() 52 MAKE_NOP(opline); in zend_delete_call_instructions() 74 opline--; in zend_delete_call_instructions() 126 SET_UNUSED(opline->op2); in zend_try_inline_call() 128 MAKE_NOP(opline); in zend_try_inline_call() 164 while (opline < end) { in zend_optimize_func_calls() 165 switch (opline->opcode) { in zend_optimize_func_calls() 181 call_stack[call].opline = opline; in zend_optimize_func_calls() 248 opline->opcode -= 9; in zend_optimize_func_calls() [all …]
|
H A D | optimize_temp_vars_5.c | 50 zend_op *opline, *end; in zend_optimize_temporary_variables() local 66 while (opline >= end) { in zend_optimize_temporary_variables() 68 start_of_T[VAR_NUM(opline->result.var) - offset] = opline; in zend_optimize_temporary_variables() 70 opline--; in zend_optimize_temporary_variables() 78 while (opline >= end) { in zend_optimize_temporary_variables() 81 if (opline->opcode == ZEND_ROPE_END) { in zend_optimize_temporary_variables() 107 (opline->opcode == ZEND_RETURN || in zend_optimize_temporary_variables() 110 opline->opcode == ZEND_FREE || in zend_optimize_temporary_variables() 112 zend_op *curr = opline; in zend_optimize_temporary_variables() 155 if (start_of_T[currT] == opline) { in zend_optimize_temporary_variables() [all …]
|
H A D | pass1.c | 44 …if (zend_optimizer_replace_by_const(op_array, opline + 1, opline->result_type, opline->result.var,… in replace_by_const_or_qm_assign() 45 MAKE_NOP(opline); in replace_by_const_or_qm_assign() 49 SET_UNUSED(opline->op2); in replace_by_const_or_qm_assign() 62 while (opline < end) { in zend_optimizer_pass1() 63 switch (opline->opcode) { in zend_optimizer_pass1() 94 if (opline->op1_type == IS_CONST && opline->op2_type == IS_CONST && in zend_optimizer_pass1() 95 …zend_optimizer_eval_binary_op(&result, opline->opcode, &ZEND_OP1_LITERAL(opline), &ZEND_OP2_LITERA… in zend_optimizer_pass1() 101 if (opline->extended_value == ZEND_CONCAT && opline->op2_type == IS_CONST in zend_optimizer_pass1() 321 COPY_NODE(opline->op1, opline->op2); in zend_optimizer_pass1() 324 MAKE_NOP(opline); in zend_optimizer_pass1() [all …]
|
H A D | pass3.c | 55 zend_op *opline; in zend_optimizer_pass3() local 66 while (opline < end) { in zend_optimizer_pass3() 68 switch (opline->opcode) { in zend_optimizer_pass3() 83 ZEND_SET_OP_JMP_ADDR(opline, opline->op1, target); in zend_optimizer_pass3() 88 MAKE_NOP(opline); in zend_optimizer_pass3() 95 *opline = *target; in zend_optimizer_pass3() 125 ZEND_SET_OP_JMP_ADDR(opline, opline->op2, target); in zend_optimizer_pass3() 156 ZEND_SET_OP_JMP_ADDR(opline, opline->op2, target); in zend_optimizer_pass3() 226 ZEND_SET_OP_JMP_ADDR(opline, opline->op2, target); in zend_optimizer_pass3() 232 opline->op2.num = 0; in zend_optimizer_pass3() [all …]
|
H A D | sccp.c | 211 switch (opline->opcode) { in can_replace_op1() 281 switch (opline->opcode) { in can_replace_op2() 880 switch (opline->opcode) { in sccp_visit_instr() 1227 opline++; in sccp_visit_instr() 1242 switch (opline->opcode) { in sccp_visit_instr() 1397 if (opline->opcode == ZEND_PRE_INC_OBJ || opline->opcode == ZEND_PRE_DEC_OBJ) { in sccp_visit_instr() 1674 zend_op *opline = call->arg_info[i].opline; in sccp_visit_instr() local 1675 if (opline->opcode != ZEND_SEND_VAL && opline->opcode != ZEND_SEND_VAR) { in sccp_visit_instr() 1833 switch (opline->opcode) { in sccp_mark_feasible_successors() 1863 switch (opline->opcode) { in sccp_mark_feasible_successors() [all …]
|
H A D | scdf.c | 125 if (opline->opcode == ZEND_OP_DATA) { in scdf_solve() 126 opline--; in scdf_solve() 160 zend_op *opline = NULL; in scdf_solve() local 163 opline = &scdf->op_array->opcodes[j]; in scdf_solve() 165 if (opline->opcode != ZEND_OP_DATA) { in scdf_solve() 173 if (opline->opcode == ZEND_OP_DATA) { in scdf_solve() 174 opline--; in scdf_solve() 189 if (!zend_optimizer_is_loop_var_free(opline)) { in is_live_loop_var_free() 237 zend_op *opline = &op_array->opcodes[i]; in cleanup_loop_var_free_block() local 239 if (opline->opcode == ZEND_NOP in cleanup_loop_var_free_block() [all …]
|
H A D | scdf.h | 40 struct _scdf_ctx *scdf, zend_op *opline, zend_ssa_op *ssa_op); 45 zend_op *opline, zend_ssa_op *ssa_op);
|
H A D | ssa_integrity.c | 209 zend_op *opline = &op_array->opcodes[i]; in ssa_verify_integrity() local 210 if (is_var_type(opline->op1_type)) { in ssa_verify_integrity() 219 if (is_var_type(opline->op2_type)) { in ssa_verify_integrity() 228 if (is_var_type(opline->result_type)) { in ssa_verify_integrity() 250 if (VAR_NUM(opline->op1.var) != ssa->vars[ssa_op->op1_use].var) { in ssa_verify_integrity() 252 VAR(ssa_op->op1_use), VAR_NUM(opline->op1.var), INSTR(i)); in ssa_verify_integrity() 267 if (VAR_NUM(opline->op2.var) != ssa->vars[ssa_op->op2_use].var) { in ssa_verify_integrity() 269 VAR(ssa_op->op2_use), VAR_NUM(opline->op2.var), INSTR(i)); in ssa_verify_integrity() 297 if (VAR_NUM(opline->op1.var) != ssa->vars[ssa_op->op1_def].var) { in ssa_verify_integrity() 299 VAR(ssa_op->op1_def), VAR_NUM(opline->op1.var), INSTR(i)); in ssa_verify_integrity() [all …]
|
H A D | zend_call_graph.c | 48 zend_op *opline = op_array->opcodes; in zend_analyze_calls() local 49 zend_op *end = opline + op_array->last; in zend_analyze_calls() 59 while (opline != end) { in zend_analyze_calls() 60 switch (opline->opcode) { in zend_analyze_calls() 110 func = ZEND_FLF_FUNC(opline); in zend_analyze_calls() 113 call_info->caller_init_opline = opline; in zend_analyze_calls() 146 if (opline->op2_type == IS_CONST) { in zend_analyze_calls() 151 uint32_t num = opline->op2.num; in zend_analyze_calls() 155 call_info->arg_info[num].opline = opline; in zend_analyze_calls() 169 opline++; in zend_analyze_calls() [all …]
|
H A D | zend_call_graph.h | 27 zend_op *opline; member
|
H A D | zend_cfg.c | 290 switch (opline->opcode) { in zend_build_cfg() 350 BB_START(OP_JMP_ADDR(opline, opline->op1) - op_array->opcodes); in zend_build_cfg() 359 BB_START(OP_JMP_ADDR(opline, opline->op1) - op_array->opcodes); in zend_build_cfg() 374 BB_START(OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes); in zend_build_cfg() 379 BB_START(OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes); in zend_build_cfg() 385 BB_START(ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value)); in zend_build_cfg() 390 BB_START(OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes); in zend_build_cfg() 402 BB_START(ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value)); in zend_build_cfg() 497 zend_op *opline; in zend_build_cfg() local 505 switch (opline->opcode) { in zend_build_cfg() [all …]
|
H A D | zend_cfg.h | 103 #define CRT_CONSTANT_EX(op_array, opline, node) \ argument 105 RT_CONSTANT(opline, (node)) \ 111 CRT_CONSTANT_EX(op_array, opline, node) 113 #define RETURN_VALUE_USED(opline) \ argument 114 ((opline)->result_type != IS_UNUSED)
|
H A D | zend_dfg.c | 43 && opline->result_type == IS_CV in _zend_dfg_add_use_def_op() 51 switch (opline->opcode) { in _zend_dfg_add_use_def_op() 71 next = opline + 1; in _zend_dfg_add_use_def_op() 86 next = opline + 1; in _zend_dfg_add_use_def_op() 101 next = opline + 1; in _zend_dfg_add_use_def_op() 113 next = opline + 1; in _zend_dfg_add_use_def_op() 126 next = opline + 1; in _zend_dfg_add_use_def_op() 136 next = opline + 1; in _zend_dfg_add_use_def_op() 270 zend_op *opline, *end; in zend_build_dfg() local 278 end = opline + blocks[j].len; in zend_build_dfg() [all …]
|
H A D | zend_dfg.h | 47 ZEND_API void zend_dfg_add_use_def_op(const zend_op_array *op_array, const zend_op *opline, uint32_…
|
H A D | zend_dump.c | 454 zend_dump_var(op_array, opline->result_type, EX_VAR_TO_NUM(opline->result.var)); in zend_dump_op() 632 zend_dump_var(op_array, opline->op1_type, EX_VAR_TO_NUM(opline->op1.var)); in zend_dump_op() 636 zend_dump_var(op_array, opline->op1_type, EX_VAR_TO_NUM(opline->op1.var)); in zend_dump_op() 654 zend_dump_unused_op(opline, opline->op1, op1_flags); in zend_dump_op() 693 zend_dump_var(op_array, opline->op2_type, EX_VAR_TO_NUM(opline->op2.var)); in zend_dump_op() 697 zend_dump_var(op_array, opline->op2_type, EX_VAR_TO_NUM(opline->op2.var)); in zend_dump_op() 717 zend_dump_unused_op(opline, opline->op2, op2_flags); in zend_dump_op() 1032 const zend_op *opline; in zend_dump_op_array() local 1040 opline++; in zend_dump_op_array() 1100 while (opline < end) { in zend_dump_op_array() [all …]
|
H A D | zend_dump.h | 37 …const zend_op_array *op_array, const zend_basic_block *b, const zend_op *opline, uint32_t dump_fla… 38 …const zend_op_array *op_array, const zend_basic_block *b, const zend_op *opline, uint32_t dump_fla…
|
H A D | zend_func_info.c | 61 uint32_t t1 = _ssa_op1_info(op_array, ssa, call_info->arg_info[0].opline, in zend_range_info() 62 ssa->ops ? &ssa->ops[call_info->arg_info[0].opline - op_array->opcodes] : NULL); in zend_range_info() 63 uint32_t t2 = _ssa_op1_info(op_array, ssa, call_info->arg_info[1].opline, in zend_range_info() 64 ssa->ops ? &ssa->ops[call_info->arg_info[1].opline - op_array->opcodes] : NULL); in zend_range_info() 69 t3 = _ssa_op1_info(op_array, ssa, call_info->arg_info[2].opline, in zend_range_info() 70 ssa->ops ? &ssa->ops[call_info->arg_info[2].opline - op_array->opcodes] : NULL); in zend_range_info()
|