/PHP-8.2/Zend/ |
H A D | zend_vm_opcodes.c | 437 ZEND_API const char* ZEND_FASTCALL zend_get_opcode_name(zend_uchar opcode) { in zend_get_opcode_name() argument 438 if (UNEXPECTED(opcode > ZEND_VM_LAST_OPCODE)) { in zend_get_opcode_name() 441 return zend_vm_opcodes_names[opcode]; in zend_get_opcode_name() 443 ZEND_API uint32_t ZEND_FASTCALL zend_get_opcode_flags(zend_uchar opcode) { in zend_get_opcode_flags() argument 444 if (UNEXPECTED(opcode > ZEND_VM_LAST_OPCODE)) { in zend_get_opcode_flags() 445 opcode = ZEND_NOP; in zend_get_opcode_flags() 447 return zend_vm_opcodes_flags[opcode]; in zend_get_opcode_flags() 450 zend_uchar opcode; in zend_get_opcode_id() local 451 …for (opcode = 0; opcode < (sizeof(zend_vm_opcodes_names) / sizeof(zend_vm_opcodes_names[0])) - 1; … in zend_get_opcode_id() 452 const char *opcode_name = zend_vm_opcodes_names[opcode]; in zend_get_opcode_id() [all …]
|
H A D | zend_opcode.c | 632 opline->opcode = ZEND_NOP; in zend_update_extended_stmts() 640 opline->opcode = ZEND_NOP; in zend_update_extended_stmts() 716 switch (def_opline->opcode) { in emit_live_range() 761 switch (def_opline->opcode) { in emit_live_range() 864 if (opline->opcode == ZEND_CASE in keeps_op1_alive() 868 || opline->opcode == ZEND_MATCH in keeps_op1_alive() 878 && opline->opcode != ZEND_ROPE_ADD); in keeps_op1_alive() 1062 switch (opline->opcode) { in pass_two() 1085 opline->opcode = ZEND_JMP; in pass_two() 1179 switch (opcode) { in get_unary_op() [all …]
|
H A D | zend_vm.h | 24 ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler(zend_op* opcode); 25 ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* opcode, uint32_t op1_info, uint3…
|
H A D | README.md | 33 `ZEND_VM` architecture allows specializing opcode handlers according to 42 opcode handlers and helpers. The typical opcode handler template looks like 52 `<OPCODE-NUMBER>` is a opcode number (0, 1, ...) 53 `<OPCODE>` is an opcode name (ZEN_NOP, ZEND_ADD, :) 59 same as in old `zend_execute.c`, but now it uses macros to access opcode 124 `zend_vm_opcodes.h` and `zend_vm_execute.h`. The first file is a list of opcode 129 different opcode threading model using `--with-vm-kind=CALL|SWITCH|GOTO|HYBRID`. 130 You can disable opcode specialization using `--without-specializer`.
|
H A D | zend_compile.c | 59 zend_uchar opcode; member 2086 opline->opcode = opcode; in zend_emit_op() 2106 opline->opcode = opcode; in zend_emit_op_tmp() 2240 tmp_opline.opcode = opcode; in zend_delayed_emit_op() 4966 opline->opcode = loop_var->opcode; in zend_handle_loops_and_finally_ex() 8539 if (!(opcode == ZEND_ADD || opcode == ZEND_SUB || opcode == ZEND_MUL || opcode == ZEND_DIV in zend_binary_op_produces_error() 8540 || opcode == ZEND_POW || opcode == ZEND_MOD || opcode == ZEND_SL || opcode == ZEND_SR in zend_binary_op_produces_error() 8541 || opcode == ZEND_BW_OR || opcode == ZEND_BW_AND || opcode == ZEND_BW_XOR)) { in zend_binary_op_produces_error() 8558 if ((opcode == ZEND_BW_OR || opcode == ZEND_BW_AND || opcode == ZEND_BW_XOR) in zend_binary_op_produces_error() 8584 if (opcode == ZEND_SL || opcode == ZEND_SR || opcode == ZEND_BW_OR in zend_binary_op_produces_error() [all …]
|
/PHP-8.2/ext/zend_test/tests/ |
H A D | observer_opline_01.phpt | 25 <!-- opcode: 'ZEND_INIT_FCALL' --> 27 <!-- opcode: 'ZEND_INIT_FCALL' --> 29 <!-- opcode: 'ZEND_ECHO' --> 31 <!-- opcode: 'ZEND_ECHO' --> 33 <!-- opcode: 'ZEND_RETURN' --> 40 <!-- opcode: 'ZEND_ECHO' --> 42 <!-- opcode: 'ZEND_ECHO' --> 46 <!-- opcode: 'ZEND_RETURN' --> 53 <!-- opcode: 'ZEND_ECHO' --> 55 <!-- opcode: 'ZEND_RETURN' --> [all …]
|
/PHP-8.2/Zend/Optimizer/ |
H A D | pass3.c | 68 switch (opline->opcode) { in zend_optimizer_pass3() 74 if (target->opcode == ZEND_JMP) { in zend_optimizer_pass3() 117 if (target->opcode == ZEND_JMP) { in zend_optimizer_pass3() 135 if (target->opcode == ZEND_JMP) { in zend_optimizer_pass3() 140 } else if (target->opcode == opline->opcode && in zend_optimizer_pass3() 146 } else if (target->opcode == INV_COND(opline->opcode) && in zend_optimizer_pass3() 176 } else if (target->opcode == opline->opcode-3 && in zend_optimizer_pass3() 183 } else if (target->opcode == opline->opcode && in zend_optimizer_pass3() 191 } else if (target->opcode == INV_EX_COND(opline->opcode) && in zend_optimizer_pass3() 197 } else if (target->opcode == INV_EX_COND_EX(opline->opcode) && in zend_optimizer_pass3() [all …]
|
H A D | optimize_func_calls.c | 45 switch (opline->opcode) { in zend_delete_call_instructions() 123 opline->opcode = ZEND_QM_ASSIGN; in zend_try_inline_call() 165 switch (opline->opcode) { in zend_optimize_func_calls() 197 fcall->opcode = ZEND_INIT_FCALL; in zend_optimize_func_calls() 241 if ((opline->opcode == ZEND_FETCH_OBJ_FUNC_ARG || opline->opcode == ZEND_FETCH_DIM_FUNC_ARG) in zend_optimize_func_calls() 248 opline->opcode -= 9; in zend_optimize_func_calls() 262 opline->opcode -= 12; in zend_optimize_func_calls() 277 opline->opcode = ZEND_SEND_VAL; in zend_optimize_func_calls() 313 opline->opcode = ZEND_SEND_REF; in zend_optimize_func_calls() 315 opline->opcode = ZEND_SEND_VAR; in zend_optimize_func_calls() [all …]
|
H A D | block_pass.c | 215 switch (opline->opcode) { in zend_optimize_block() 450 opline->opcode = in zend_optimize_block() 463 opline->opcode = in zend_optimize_block() 626 opline->opcode = INV_COND(opline->opcode); in zend_optimize_block() 1271 } else if (target->opcode == last_op->opcode && in zend_jmp_optimization() 1275 } else if (target->opcode == INV_COND(last_op->opcode) && in zend_jmp_optimization() 1316 last_op->opcode = INV_COND(last_op->opcode); in zend_jmp_optimization() 1345 } else if (target->opcode == last_op->opcode-3 && in zend_jmp_optimization() 1350 } else if (target->opcode == last_op->opcode && in zend_jmp_optimization() 1356 } else if (target->opcode == INV_EX_COND(last_op->opcode) && in zend_jmp_optimization() [all …]
|
H A D | optimize_temp_vars_5.c | 82 if (opline->opcode == ZEND_ROPE_END) { in zend_optimize_temporary_variables() 108 (opline->opcode == ZEND_RETURN || in zend_optimize_temporary_variables() 109 opline->opcode == ZEND_GENERATOR_RETURN || in zend_optimize_temporary_variables() 110 opline->opcode == ZEND_RETURN_BY_REF || in zend_optimize_temporary_variables() 111 opline->opcode == ZEND_FREE || in zend_optimize_temporary_variables() 112 opline->opcode == ZEND_FE_FREE)) { in zend_optimize_temporary_variables() 116 if (curr->opcode == ZEND_FAST_CALL) { in zend_optimize_temporary_variables() 119 } else if (curr->opcode != ZEND_FREE && in zend_optimize_temporary_variables() 120 curr->opcode != ZEND_FE_FREE && in zend_optimize_temporary_variables() 160 if (opline->opcode != ZEND_FAST_CALL) { in zend_optimize_temporary_variables() [all …]
|
H A D | pass1.c | 47 opline->opcode = ZEND_QM_ASSIGN; in replace_by_const_or_qm_assign() 63 switch (opline->opcode) { in zend_optimizer_pass1() 191 while (send1_opline->opcode == ZEND_NOP) { in zend_optimizer_pass1() 214 while (init_opline->opcode == ZEND_NOP) { in zend_optimizer_pass1() 237 opline->opcode = ZEND_DECLARE_CONST; in zend_optimizer_pass1() 296 if (opline->opcode == ZEND_JMPZ_EX) { in zend_optimizer_pass1() 297 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1() 304 if (opline->opcode == ZEND_JMPNZ_EX) { in zend_optimizer_pass1() 305 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1() 321 if (opline->opcode == ZEND_JMPZ) { in zend_optimizer_pass1() [all …]
|
H A D | dfa_pass.c | 323 if (opline->opcode == ZEND_NEW) { in opline_supports_assign_contraction() 328 if (opline->opcode == ZEND_DO_ICALL || opline->opcode == ZEND_DO_UCALL in opline_supports_assign_contraction() 329 || opline->opcode == ZEND_DO_FCALL || opline->opcode == ZEND_DO_FCALL_BY_NAME) { in opline_supports_assign_contraction() 337 if (opline->opcode == ZEND_POST_INC || opline->opcode == ZEND_POST_DEC) { in opline_supports_assign_contraction() 349 if (opline->opcode == ZEND_CAST in opline_supports_assign_contraction() 639 switch (opline->opcode) { in zend_ssa_replace_control_link() 770 switch (opline->opcode) { in zend_dfa_optimize_jmps() 788 opline->opcode = ZEND_JMP; in zend_dfa_optimize_jmps() 814 opline->opcode = ZEND_JMP; in zend_dfa_optimize_jmps() 969 opline->opcode = ZEND_JMP; in zend_dfa_optimize_jmps() [all …]
|
H A D | escape_analysis.c | 108 if (opline->opcode != ZEND_ASSIGN) { in zend_build_equi_escape_sets() 123 if (opline->opcode != ZEND_QM_ASSIGN) { in zend_build_equi_escape_sets() 156 switch (opline->opcode) { in is_allocation_def() 191 switch (opline->opcode) { in is_allocation_def() 220 switch (opline->opcode) { in is_local_def() 238 switch (opline->opcode) { in is_local_def() 263 switch (opline->opcode) { in is_escape_use() 308 if ((opline-1)->opcode != ZEND_ASSIGN_DIM in is_escape_use() 332 switch (opline->opcode) { in is_escape_use() 353 switch (opline->opcode) { in is_escape_use() [all …]
|
H A D | nop_removal.c | 47 if (opline->opcode == ZEND_JMP && ZEND_OP1_JMP_ADDR(opline) > op_array->opcodes + i) { in zend_optimizer_nop_removal() 51 while (target->opcode == ZEND_NOP) { 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()
|
H A D | sccp.c | 211 switch (opline->opcode) { in can_replace_op1() 280 switch (opline->opcode) { in can_replace_op2() 671 if (opcode == ZEND_PRE_INC in ct_eval_incdec() 672 || opcode == ZEND_POST_INC in ct_eval_incdec() 864 switch (opline->opcode) { in sccp_visit_instr() 1226 switch (opline->opcode) { in sccp_visit_instr() 1382 if (opline->opcode == ZEND_PRE_INC_OBJ || opline->opcode == ZEND_PRE_DEC_OBJ) { in sccp_visit_instr() 1658 if (opline->opcode != ZEND_SEND_VAL && opline->opcode != ZEND_SEND_VAR) { in sccp_visit_instr() 1771 switch (opline->opcode) { in sccp_mark_feasible_successors() 1800 switch (opline->opcode) { in sccp_mark_feasible_successors() [all …]
|
H A D | zend_optimizer.c | 222 opline->opcode = ZEND_FREE; in zend_optimizer_convert_to_free_op1() 281 switch (opline->opcode) { in zend_optimizer_update_op1_const() 283 switch ((opline-1)->opcode) { in zend_optimizer_update_op1_const() 444 switch (opline->opcode) { in zend_optimizer_update_op2_const() 631 switch (opline->opcode) { in zend_optimizer_replace_by_const() 684 } while (opline->opcode != ZEND_RETURN && opline->opcode != ZEND_RETURN_BY_REF); in zend_optimizer_replace_by_const() 707 switch (new_opline->opcode) { in zend_optimizer_migrate_jump() 750 switch (opline->opcode) { in zend_optimizer_shift_jump() 831 switch (opline->opcode) { in zend_optimizer_get_called_func() 1138 switch (opline->opcode) { in zend_redo_pass_two() [all …]
|
H A D | dce.c | 78 switch (opline->opcode) { in may_have_side_effects() 299 || (opline->opcode == ZEND_ASSIGN in add_operands_to_worklists() 308 || (opline->opcode == ZEND_FE_FETCH_R in add_operands_to_worklists() 355 switch (def_opline->opcode) { in try_remove_var_def() 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() 577 if (op_array->opcodes[i].opcode == ZEND_OP_DATA) { in dce_optimize_op_array() 592 if (op_array->opcodes[i].opcode == ZEND_NEW in dce_optimize_op_array() [all …]
|
H A D | zend_inference.c | 801 switch (opcode) { in zend_inference_calc_binary_op_range() 2272 switch (opcode) { in binary_op_result_type() 2713 if (opline->opcode == ZEND_COALESCE || opline->opcode == ZEND_JMP_SET) { in _zend_update_type_info() 3613 opcode = op_array->opcodes[j].opcode; in _zend_update_type_info() 3620 opcode = ssa_opcodes[j]->opcode; in _zend_update_type_info() 3622 switch (opcode) { in _zend_update_type_info() 3708 opline->opcode != ZEND_FETCH_DIM_R && opline->opcode != ZEND_FETCH_DIM_IS in _zend_update_type_info() 3945 if (opline->opcode == ZEND_FETCH_R || opline->opcode == ZEND_FETCH_IS) { in _zend_update_type_info() 4139 return opline->opcode == ZEND_ADD || opline->opcode == ZEND_SUB in is_narrowable_instr() 4140 || opline->opcode == ZEND_MUL || opline->opcode == ZEND_DIV; in is_narrowable_instr() [all …]
|
H A D | zend_cfg.c | 44 zend_uchar opcode = opcodes[b->start + b->len - 1].opcode; in zend_mark_reachable() local 45 if (opcode == ZEND_MATCH) { in zend_mark_reachable() 47 } else if (opcode == ZEND_SWITCH_LONG || opcode == ZEND_SWITCH_STRING) { in zend_mark_reachable() 54 if (opcode == ZEND_JMP) { in zend_mark_reachable() 62 opcode == ZEND_YIELD || in zend_mark_reachable() 64 opcode == ZEND_DO_FCALL || in zend_mark_reachable() 65 opcode == ZEND_DO_UCALL || in zend_mark_reachable() 71 if (opcode == ZEND_RECV || in zend_mark_reachable() 72 opcode == ZEND_RECV_INIT) { in zend_mark_reachable() 290 switch (opline->opcode) { in zend_build_cfg() [all …]
|
H A D | zend_ssa.h | 223 if (opline->opcode == ZEND_ASSIGN in zend_ssa_is_no_val_use() 224 || opline->opcode == ZEND_UNSET_CV in zend_ssa_is_no_val_use() 225 || opline->opcode == ZEND_BIND_GLOBAL in zend_ssa_is_no_val_use() 226 || opline->opcode == ZEND_BIND_STATIC) { in zend_ssa_is_no_val_use() 229 if (opline->opcode == ZEND_FE_FETCH_R || opline->opcode == ZEND_FE_FETCH_RW) { in zend_ssa_is_no_val_use() 233 && opline->opcode != ZEND_ADD_ARRAY_ELEMENT in zend_ssa_is_no_val_use() 234 && opline->opcode != ZEND_ADD_ARRAY_UNPACK) { in zend_ssa_is_no_val_use()
|
/PHP-8.2/ext/opcache/tests/jit/ |
H A D | ignored_opcodes.phpt | 29 <!-- opcode: 'ZEND_BEGIN_SILENCE' in user handler --> 30 <!-- opcode: 'ZEND_END_SILENCE' in user handler --> 31 <!-- opcode: 'ZEND_EXIT' in user handler -->
|
/PHP-8.2/ext/opcache/jit/ |
H A D | zend_jit_vm_helpers.c | 673 && opline->opcode != ZEND_ROPE_ADD 674 && opline->opcode != ZEND_ROPE_END 675 && opline->opcode != ZEND_NEW 702 && opline->opcode != ZEND_INSTANCEOF 719 || (opline->opcode != ZEND_FE_FETCH_R 740 if (opline->opcode == ZEND_ASSIGN_DIM || 741 opline->opcode == ZEND_ASSIGN_OBJ || 777 switch (opline->opcode) { 875 if (opline->opcode == ZEND_DO_FCALL 876 || opline->opcode == ZEND_DO_ICALL [all …]
|
H A D | zend_jit_trace.c | 295 switch (opline->opcode) { in zend_jit_trace_may_exit() 623 switch (opline->opcode) { in zend_jit_trace_op_len() 1047 switch (opline->opcode) { in zend_jit_trace_find_init_fcall_op() 1689 switch (opline->opcode) { in zend_jit_trace_build_tssa() 2241 if ((opline->opcode != ZEND_FE_FETCH_R && opline->opcode != ZEND_FE_FETCH_RW) in zend_jit_trace_build_tssa() 2919 || (opline->opcode != ZEND_PRE_INC && opline->opcode != ZEND_PRE_DEC)) { in zend_jit_trace_allocate_registers() 3755 switch (opline->opcode) { in zend_jit_trace_update_condition_ranges() 6213 if (opline->opcode != ZEND_NOP && opline->opcode != ZEND_JMP) { in zend_jit_trace() 6343 && ((opline->opcode != ZEND_QM_ASSIGN && opline->opcode != ZEND_CAST) in zend_jit_trace() 8371 switch (opline->opcode) { in zend_jit_trace_supported() [all …]
|
/PHP-8.2/Zend/tests/ |
H A D | bug81684.phpt | 2 Bug #81684: ??= on $GLOBALS produces an invalid opcode 5 $GLOBALS['x'] ??= 'x'; // Fatal error: Invalid opcode 23/1/0
|
H A D | bug73663.phpt | 2 Bug #73663 ("Invalid opcode 65/16/8" occurs with a variable created with list()) 15 var_dump(list($val) = $array); // NG: Invalid opcode
|