/PHP-7.4/ext/opcache/Optimizer/ |
H A D | pass2.c | 37 zend_op *opline; in zend_optimizer_pass2() local 41 while (opline < end) { in zend_optimizer_pass2() 144 opline->op1.var == opline->result.var) { in zend_optimizer_pass2() 175 COPY_NODE(opline->op1, opline->op2); in zend_optimizer_pass2() 177 MAKE_NOP(opline); in zend_optimizer_pass2() 184 if (ZEND_OP2_JMP_ADDR(opline) == ZEND_OP1_JMP_ADDR(opline + 1)) { in zend_optimizer_pass2() 197 opline->extended_value = ZEND_OPLINE_TO_OFFSET(opline, ZEND_OP1_JMP_ADDR(opline + 1)); in zend_optimizer_pass2() 199 opline->extended_value = ZEND_OPLINE_TO_OFFSET(opline, ZEND_OP2_JMP_ADDR(opline)); in zend_optimizer_pass2() 200 ZEND_SET_OP_JMP_ADDR(opline, opline->op2, ZEND_OP1_JMP_ADDR(opline + 1)); in zend_optimizer_pass2() 217 ZEND_SET_OP_JMP_ADDR(opline, opline->op1, target_opline); in zend_optimizer_pass2() [all …]
|
H A D | pass1_5.c | 46 while (opline < end) { in zend_optimizer_pass1() 79 MAKE_NOP(opline); in zend_optimizer_pass1() 96 …if (zend_optimizer_replace_by_const(op_array, opline + 1, opline->result_type, opline->result.var,… in zend_optimizer_pass1() 219 (opline - 1)->result.var == opline->op1.var) { in zend_optimizer_pass1() 531 ((opline + 1)->opcode == opline->opcode + 1 || in zend_optimizer_pass1() 536 (opline + 1)->op1_type == opline->result_type && in zend_optimizer_pass1() 537 (opline + 1)->op1.var == opline->result.var && in zend_optimizer_pass1() 548 (opline + 1)->opcode = opline->opcode; in zend_optimizer_pass1() 551 (opline + 1)->op1_type = (opline + 1)->op2_type; in zend_optimizer_pass1() 552 (opline + 1)->op1 = (opline + 1)->op2; in zend_optimizer_pass1() [all …]
|
H A D | pass3.c | 55 zend_op *opline; in zend_optimizer_pass3() local 111 COPY_NODE(opline->op1, opline->op2); in zend_optimizer_pass3() 120 opline->extended_value = opline->opcode; in zend_optimizer_pass3() 124 opline++; in zend_optimizer_pass3() 136 if (ZEND_OP1_JMP_ADDR(opline) == opline + 1) { in zend_optimizer_pass3() 197 ZEND_SET_OP_JMP_ADDR(opline, opline->op2, target + 1); in zend_optimizer_pass3() 203 ZEND_SET_OP_JMP_ADDR(opline, opline->op2, target + 1); in zend_optimizer_pass3() 224 if (ZEND_OP2_JMP_ADDR(opline) == opline + 1) { in zend_optimizer_pass3() 225 if (opline->op1.var == opline->result.var) { in zend_optimizer_pass3() 367 opline->opcode = opline->opcode-3; /* JMP_EX -> JMP */ in zend_optimizer_pass3() [all …]
|
H A D | compact_literals.c | 289 opline++; in zend_optimizer_compact_literals() 507 opline->op1.constant = map[opline->op1.constant]; in zend_optimizer_compact_literals() 510 opline->op2.constant = map[opline->op2.constant]; in zend_optimizer_compact_literals() 618 opline->result.num = func_slot[opline->op2.constant]; in zend_optimizer_compact_literals() 622 func_slot[opline->op2.constant] = opline->result.num; in zend_optimizer_compact_literals() 656 opline->result.num = class_slot[opline->op1.constant]; in zend_optimizer_compact_literals() 660 class_slot[opline->op1.constant] = opline->result.num; in zend_optimizer_compact_literals() 751 opline->op2.num = class_slot[opline->op1.constant]; in zend_optimizer_compact_literals() 755 class_slot[opline->op1.constant] = opline->op2.num; in zend_optimizer_compact_literals() 788 opline++; in zend_optimizer_compact_literals() [all …]
|
H A D | optimize_func_calls.c | 41 zend_op *opline; member 51 switch (opline->opcode) { in zend_delete_call_instructions() 58 MAKE_NOP(opline); in zend_delete_call_instructions() 77 MAKE_NOP(opline); in zend_delete_call_instructions() 90 opline--; in zend_delete_call_instructions() 151 MAKE_NOP(opline); in zend_try_inline_call() 173 while (opline < end) { in zend_optimize_func_calls() 174 switch (opline->opcode) { in zend_optimize_func_calls() 187 call_stack[call].opline = opline; in zend_optimize_func_calls() 274 MAKE_NOP(opline); in zend_optimize_func_calls() [all …]
|
H A D | zend_optimizer.c | 384 (opline + 1)->op2.var == opline->result.var) { in zend_optimizer_update_op2_const() 686 opline++; in zend_optimizer_replace_by_const() 741 …ZEND_SET_OP_JMP_ADDR(opline, opline->op1, ZEND_OP1_JMP_ADDR(opline) - shiftlist[ZEND_OP1_JMP_ADDR(… in zend_optimizer_shift_jump() 744 …opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, ZEND_OFFSET_TO_OPLINE_NUM(op_… in zend_optimizer_shift_jump() 755 …ZEND_SET_OP_JMP_ADDR(opline, opline->op2, ZEND_OP2_JMP_ADDR(opline) - shiftlist[ZEND_OP2_JMP_ADDR(… in zend_optimizer_shift_jump() 759 …ZEND_SET_OP_JMP_ADDR(opline, opline->op2, ZEND_OP2_JMP_ADDR(opline) - shiftlist[ZEND_OP2_JMP_ADDR(… in zend_optimizer_shift_jump() 1078 opline++; in zend_revert_pass_two() 1159 opline++; in zend_redo_pass_two() 1245 opline++; in zend_redo_pass_two_ex() 1284 Z_STR_P(RT_CONSTANT(opline, opline->op2))); in zend_adjust_fcall_stack_size() [all …]
|
H A D | optimize_temp_vars_5.c | 51 zend_op *opline, *end; in zend_optimize_temporary_variables() local 67 while (opline >= end) { in zend_optimize_temporary_variables() 69 start_of_T[VAR_NUM(opline->result.var) - offset] = opline; in zend_optimize_temporary_variables() 71 opline--; in zend_optimize_temporary_variables() 80 while (opline >= end) { in zend_optimize_temporary_variables() 83 if (opline->opcode == ZEND_ROPE_END) { in zend_optimize_temporary_variables() 113 opline->opcode == ZEND_FREE || in zend_optimize_temporary_variables() 115 zend_op *curr = opline; in zend_optimize_temporary_variables() 155 if (start_of_T[currT] == opline) { in zend_optimize_temporary_variables() 165 if (start_of_T[currT] == opline) { in zend_optimize_temporary_variables() [all …]
|
H A D | block_pass.c | 82 #define SET_VAR_SOURCE(opline) Tsource[VAR_NUM(opline->result.var)] = opline argument 193 COPY_NODE(opline->result, opline->op1); in zend_optimize_block() 215 COPY_NODE(opline->op1, opline->op2); in zend_optimize_block() 223 COPY_NODE(opline->op1, opline->op2); in zend_optimize_block() 478 COPY_NODE(opline->op1, opline->op2); in zend_optimize_block() 624 (opline->result_type == opline->op1_type && in zend_optimize_block() 625 opline->result.var == opline->op1.var))) { in zend_optimize_block() 752 COPY_NODE(opline->op1, opline->op2); in zend_optimize_block() 892 if (opline->op1_type == opline->result_type && in zend_optimize_block() 893 opline->op1.var == opline->result.var) { in zend_optimize_block() [all …]
|
H A D | zend_inference.h | 42 if (opline->opN##_type == IS_CONST) { \ 43 zval *zv = CRT_CONSTANT_EX(op_array, opline, opline->opN, ssa->rt_constants); \ 58 if (opline->opN##_type == IS_CONST) { \ 59 zval *zv = CRT_CONSTANT_EX(op_array, opline, opline->opN, ssa->rt_constants); \ 82 if (opline->opN##_type == IS_CONST) { \ 83 zval *zv = CRT_CONSTANT_EX(op_array, opline, opline->opN, ssa->rt_constants); \ 106 if (opline->opN##_type == IS_CONST) { \ 107 zval *zv = CRT_CONSTANT_EX(op_array, opline, opline->opN, ssa->rt_constants); \ 124 if (opline->opN##_type == IS_CONST) { \ 125 zval *zv = CRT_CONSTANT_EX(op_array, opline, opline->opN, ssa->rt_constants); \ [all …]
|
H A D | dfa_pass.c | 745 COPY_NODE(opline->op1, opline->op2); in zend_dfa_optimize_jmps() 771 COPY_NODE(opline->op1, opline->op2); in zend_dfa_optimize_jmps() 834 opline->op1.num = opline->op2.num; in zend_dfa_optimize_jmps() 900 COPY_NODE(opline->op1, opline->op2); in zend_dfa_optimize_jmps() 1236 opline->result_type = opline->op1_type; in zend_dfa_optimize_op_array() 1237 opline->result.var = opline->op1.var; in zend_dfa_optimize_op_array() 1238 opline->op1_type = opline->op2_type; in zend_dfa_optimize_op_array() 1239 opline->op1.var = opline->op2.var; in zend_dfa_optimize_op_array() 1290 opline->opcode = opline->extended_value; in zend_dfa_optimize_op_array() 1292 opline->result_type = opline->op1_type; in zend_dfa_optimize_op_array() [all …]
|
H A D | nop_removal.c | 36 zend_op *end, *opline; in zend_optimizer_nop_removal() local 45 for (opline = op_array->opcodes; opline < end; opline++) { in zend_optimizer_nop_removal() 48 if (opline->opcode == ZEND_JMP && ZEND_OP1_JMP_ADDR(opline) > op_array->opcodes + i) { in zend_optimizer_nop_removal() 50 zend_op *target = ZEND_OP1_JMP_ADDR(opline) - 1; in zend_optimizer_nop_removal() 55 if (target == opline) { in zend_optimizer_nop_removal() 57 opline->opcode = ZEND_NOP; in zend_optimizer_nop_removal() 62 if (opline->opcode == ZEND_NOP) { in zend_optimizer_nop_removal() 68 *new_opline = *opline; in zend_optimizer_nop_removal() 69 zend_optimizer_migrate_jump(op_array, new_opline, opline); in zend_optimizer_nop_removal() 80 for (opline = op_array->opcodes; opline<end; opline++) { in zend_optimizer_nop_removal() [all …]
|
H A D | compact_vars.c | 38 zend_op *opline = &op_array->opcodes[i]; in zend_optimizer_compact_vars() local 39 if (opline->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) { in zend_optimizer_compact_vars() 42 if (opline->op2_type & (IS_CV|IS_VAR|IS_TMP_VAR)) { in zend_optimizer_compact_vars() 45 if (opline->result_type & (IS_CV|IS_VAR|IS_TMP_VAR)) { in zend_optimizer_compact_vars() 47 if (opline->opcode == ZEND_ROPE_INIT) { in zend_optimizer_compact_vars() 86 zend_op *opline = &op_array->opcodes[i]; in zend_optimizer_compact_vars() local 87 if (opline->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) { in zend_optimizer_compact_vars() 88 opline->op1.var = NUM_VAR(vars_map[VAR_NUM(opline->op1.var)]); in zend_optimizer_compact_vars() 90 if (opline->op2_type & (IS_CV|IS_VAR|IS_TMP_VAR)) { in zend_optimizer_compact_vars() 91 opline->op2.var = NUM_VAR(vars_map[VAR_NUM(opline->op2.var)]); in zend_optimizer_compact_vars() [all …]
|
H A D | escape_analysis.c | 173 switch (opline->opcode) { in is_allocation_def() 208 switch (opline->opcode) { in is_allocation_def() 239 switch (opline->opcode) { in is_local_def() 258 switch (opline->opcode) { in is_local_def() 283 switch (opline->opcode) { in is_escape_use() 336 opline--; in is_escape_use() 338 if (opline->op1_type != IS_CV in is_escape_use() 352 switch (opline->opcode) { in is_escape_use() 354 if (opline->op1_type != IS_CV in is_escape_use() 360 if (opline->op2_type == IS_CV || opline->result_type != IS_UNUSED) { in is_escape_use() [all …]
|
H A D | zend_optimizer_internal.h | 28 #define ZEND_OP1_LITERAL(opline) (op_array)->literals[(opline)->op1.constant] argument 29 #define ZEND_OP1_JMP_ADDR(opline) OP_JMP_ADDR(opline, (opline)->op1) argument 30 #define ZEND_OP2_LITERAL(opline) (op_array)->literals[(opline)->op2.constant] argument 31 #define ZEND_OP2_JMP_ADDR(opline) OP_JMP_ADDR(opline, (opline)->op2) argument 74 static inline zend_bool zend_optimizer_is_loop_var_free(const zend_op *opline) { in zend_optimizer_is_loop_var_free() argument 75 return (opline->opcode == ZEND_FE_FREE && opline->extended_value != ZEND_FREE_ON_RETURN) in zend_optimizer_is_loop_var_free() 76 || (opline->opcode == ZEND_FREE && opline->extended_value == ZEND_FREE_SWITCH); in zend_optimizer_is_loop_var_free() 88 zend_op *opline, 91 zend_op *opline, 94 zend_op *opline, [all …]
|
H A D | zend_dfg.c | 42 zend_op *opline, *end; in zend_build_dfg() local 48 end = opline + blocks[j].len; in zend_build_dfg() 49 for (; opline < end; opline++) { in zend_build_dfg() 50 if (opline->opcode != ZEND_OP_DATA) { in zend_build_dfg() 51 zend_op *next = opline + 1; in zend_build_dfg() 72 if (opline->op1_type == IS_CV) { in zend_build_dfg() 74 switch (opline->opcode) { in zend_build_dfg() 157 if (opline->op2_type == IS_CV) { in zend_build_dfg() 159 switch (opline->opcode) { in zend_build_dfg() 187 if (opline->opcode == ZEND_FE_FETCH_R || opline->opcode == ZEND_FE_FETCH_RW) { in zend_build_dfg() [all …]
|
H A D | zend_dump.c | 435 zend_dump_var(op_array, opline->result_type, EX_VAR_TO_NUM(opline->result.var)); in zend_dump_op() 606 zend_dump_var(op_array, opline->op1_type, EX_VAR_TO_NUM(opline->op1.var)); in zend_dump_op() 610 zend_dump_var(op_array, opline->op1_type, EX_VAR_TO_NUM(opline->op1.var)); in zend_dump_op() 628 zend_dump_unused_op(opline, opline->op1, op1_flags); in zend_dump_op() 634 if (opline->opcode == ZEND_SWITCH_LONG || opline->opcode == ZEND_SWITCH_STRING) { in zend_dump_op() 663 zend_dump_var(op_array, opline->op2_type, EX_VAR_TO_NUM(opline->op2.var)); in zend_dump_op() 667 zend_dump_var(op_array, opline->op2_type, EX_VAR_TO_NUM(opline->op2.var)); in zend_dump_op() 687 zend_dump_unused_op(opline, opline->op2, op2_flags); in zend_dump_op() 1000 opline++; in zend_dump_op_array() 1059 while (opline < end) { in zend_dump_op_array() [all …]
|
H A D | zend_ssa.c | 174 zend_op *op = opline; in find_adjusted_tmp_var() 271 opline->op1.var == (opline-1)->result.var) { in place_essa_pis() 282 op_array, build_flags, opline, (opline-1)->op1.var, &val2); in place_essa_pis() 289 op_array, build_flags, opline, (opline-1)->op2.var, &val1); in place_essa_pis() 419 opline->op1.var == (opline-1)->result.var && in place_essa_pis() 441 opline->op1.var == (opline-1)->result.var && in place_essa_pis() 453 opline->op1.var == (opline-1)->result.var && (opline-1)->op1_type == IS_CV) { in place_essa_pis() 468 opline->op1.var == (opline-1)->result.var) { in place_essa_pis() 505 opline->op1.var == (opline-1)->result.var && (opline-1)->op1_type == IS_CV && in place_essa_pis() 560 for (; opline < end; opline++) { in zend_ssa_rename() [all …]
|
H A D | sccp.c | 211 switch (opline->opcode) { in can_replace_op1() 280 switch (opline->opcode) { in can_replace_op2() 300 switch (opline->opcode) { in try_replace_op1() 344 switch (opline->opcode) { in try_replace_op2() 355 MAKE_NOP(opline); in try_replace_op2() 1074 switch (opline->opcode) { in sccp_visit_instr() 1441 opline++; in sccp_visit_instr() 1456 switch (opline->opcode) { in sccp_visit_instr() 1865 zend_op *opline = call->arg_info[i].opline; in sccp_visit_instr() local 1866 if (opline->opcode != ZEND_SEND_VAL && opline->opcode != ZEND_SEND_VAR) { in sccp_visit_instr() [all …]
|
H A D | zend_cfg.c | 288 switch (opline->opcode) { in zend_build_cfg() 339 BB_START(OP_JMP_ADDR(opline, opline->op1) - op_array->opcodes); in zend_build_cfg() 348 BB_START(OP_JMP_ADDR(opline, opline->op1) - op_array->opcodes); in zend_build_cfg() 354 BB_START(OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes); in zend_build_cfg() 355 BB_START(ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value)); in zend_build_cfg() 367 BB_START(OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes); in zend_build_cfg() 372 BB_START(OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes); in zend_build_cfg() 378 BB_START(ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value)); in zend_build_cfg() 383 BB_START(OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes); in zend_build_cfg() 394 BB_START(ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value)); in zend_build_cfg() [all …]
|
H A D | zend_inference.c | 844 zend_op *opline; in zend_inference_calc_range() local 1000 op_array, ssa, opline, &ssa->ops[line], opline->opcode, tmp); in zend_inference_calc_range() 1356 opline++; in zend_inference_calc_range() 1380 opline++; in zend_inference_calc_range() 2443 opline--; in zend_update_type_info() 2869 opline++; in zend_update_type_info() 2903 opline++; in zend_update_type_info() 3025 opline++; in zend_update_type_info() 3036 opline++; in zend_update_type_info() 3837 return opline->opcode == ZEND_ADD || opline->opcode == ZEND_SUB in is_narrowable_instr() [all …]
|
/PHP-7.4/sapi/phpdbg/ |
H A D | phpdbg_opcode.c | 99 if (opline->extended_value) { in phpdbg_decode_opline() 105 ops, opline, opline->op1, opline->op1_type, ZEND_VM_OP1_FLAGS(flags)); in phpdbg_decode_opline() 109 ops, opline, opline->op2, opline->op2_type, ZEND_VM_OP2_FLAGS(flags)); in phpdbg_decode_opline() 112 switch (opline->opcode) { in phpdbg_decode_opline() 120 decode[3] = phpdbg_decode_op(ops, opline, &opline->result, opline->result_type); in phpdbg_decode_opline() 123 decode[3] = phpdbg_decode_op(ops, opline, &opline->result, opline->result_type); in phpdbg_decode_opline() 154 zend_op *opline = (zend_op *) execute_data->opline; in phpdbg_print_opline_ex() local 160 opline->lineno, in phpdbg_print_opline_ex() 161 opline, in phpdbg_print_opline_ex() 168 opline->lineno, in phpdbg_print_opline_ex() [all …]
|
/PHP-7.4/Zend/ |
H A D | zend_opcode.c | 509 zend_op *opline = op_array->opcodes, *end=opline+op_array->last; in zend_update_extended_stmts() local 516 opline++; in zend_update_extended_stmts() 520 opline->lineno = (opline+1)->lineno; in zend_update_extended_stmts() 526 opline++; in zend_update_extended_stmts() 781 opline--; in zend_calc_live_ranges() 970 opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, opline->extended_value); in pass_two() 998 opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, opline->extended_value); in pass_two() 1021 opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, opline->extended_value); in pass_two() 1026 ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline, opline->op1); in pass_two() 1031 ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline, opline->op2); in pass_two() [all …]
|
H A D | zend_vm_execute.h | 2652 opline = EX(opline); in ZEND_USER_OPCODE_SPEC_HANDLER() 3373 opline = OP_JMP_ADDR(opline, opline->op2); in ZEND_JMPZ_SPEC_CONST_HANDLER() 3402 opline = OP_JMP_ADDR(opline, opline->op2); in ZEND_JMPNZ_SPEC_CONST_HANDLER() 3436 opline = OP_JMP_ADDR(opline, opline->op2); in ZEND_JMPZNZ_SPEC_CONST_HANDLER() 3474 opline = OP_JMP_ADDR(opline, opline->op2); in ZEND_JMPZ_EX_SPEC_CONST_HANDLER() 3507 opline = OP_JMP_ADDR(opline, opline->op2); in ZEND_JMPNZ_EX_SPEC_CONST_HANDLER() 13430 opline = OP_JMP_ADDR(opline, opline->op2); in ZEND_JMPZ_SPEC_TMPVAR_HANDLER() 13459 opline = OP_JMP_ADDR(opline, opline->op2); in ZEND_JMPNZ_SPEC_TMPVAR_HANDLER() 13493 opline = OP_JMP_ADDR(opline, opline->op2); in ZEND_JMPZNZ_SPEC_TMPVAR_HANDLER() 13531 opline = OP_JMP_ADDR(opline, opline->op2); in ZEND_JMPZ_EX_SPEC_TMPVAR_HANDLER() [all …]
|
H A D | zend_vm_def.h | 3010 opline = OP_JMP_ADDR(opline, opline->op2); 3039 opline = OP_JMP_ADDR(opline, opline->op2); 3071 opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value); 3073 opline = OP_JMP_ADDR(opline, opline->op2); 3111 opline = OP_JMP_ADDR(opline, opline->op2); 3144 opline = OP_JMP_ADDR(opline, opline->op2); 4466 gen_execute_data->opline = opline + 1; 7310 lcname = RT_CONSTANT(opline, opline->op1); 7579 opline = EX(opline); 7597 ZEND_VM_DISPATCH(opline->opcode, opline); [all …]
|
H A D | zend_compile.c | 685 opline--; in zend_do_free() 700 opline--; in zend_do_free() 726 opline--; in zend_do_free() 1158 ++opline; in zend_build_delayed_early_binding_list() 1189 zval *lcname = RT_CONSTANT(opline, opline->op1); in zend_do_delayed_early_binding() 2429 opline->result.var = opline->op1.var; in zend_separate_if_call_and_write() 2886 if (opline && opline->opcode == ZEND_FETCH_OBJ_W) { in zend_compile_assign_ref() 4482 opline--; in zend_resolve_goto_label() 8214 opline->op1_type = opline->op2_type; in zend_compile_encaps_list() 8215 opline->op1 = opline->op2; in zend_compile_encaps_list() [all …]
|