/PHP-7.2/ext/opcache/Optimizer/ |
H A D | zend_inference.h | 47 ssa->ops && \ 70 ssa->ops && \ 71 ssa->var_info && \ 94 ssa->ops && \ 95 ssa->var_info && \ 112 ssa->ops && \ 113 ssa->var_info && \ 130 ssa->ops && \ 131 ssa->var_info && \ 214 return get_ssa_var_info(ssa, ssa->ops ? ssa->ops[opline - op_array->opcodes].opN##_use : -1); \ [all …]
|
H A D | dfa_pass.c | 183 ssa->ops[target] = ssa->ops[i]; in zend_ssa_remove_nops() 221 ssa->vars[j].definition -= shiftlist[ssa->vars[j].definition]; in zend_ssa_remove_nops() 224 ssa->vars[j].use_chain -= shiftlist[ssa->vars[j].use_chain]; in zend_ssa_remove_nops() 705 && ssa->ops[ssa->vars[src_var].definition].result_use < 0 in zend_dfa_optimize_op_array() 711 ssa, &op_array->opcodes[ssa->vars[src_var].definition], in zend_dfa_optimize_op_array() 747 if (ssa->ops[op_1].op1_use != ssa->ops[op_1].op2_use) { in zend_dfa_optimize_op_array() 756 ssa->ops[op_1].op1_use = ssa->ops[op_1].op2_use; in zend_dfa_optimize_op_array() 757 ssa->ops[op_1].op1_use_chain = ssa->ops[op_1].op2_use_chain; in zend_dfa_optimize_op_array() 815 ssa->ops[ret].op1_use_chain = ssa->vars[orig_var].use_chain; in zend_dfa_optimize_op_array() 847 ssa->ops[op_1].result_def = ssa->ops[op_1].op1_def; in zend_dfa_optimize_op_array() [all …]
|
H A D | dce.c | 48 zend_ssa *ssa; member 259 zend_ssa *ssa = ctx->ssa; in add_phi_sources_to_worklists() local 342 zend_ssa *ssa = ctx->ssa; in dce_instr() local 390 ssa->vars[free_var].use_chain = ssa_op - ssa->ops; in dce_instr() 517 zend_ssa *ssa = ctx->ssa; in try_remove_trivial_phi() local 523 zend_ssa_remove_phi(ssa, phi); in try_remove_trivial_phi() 605 var = ssa->ops[def].result_def; in dce_live_ranges() 635 ctx.ssa = ssa; in dce_optimize_op_array() 656 int b = ssa->cfg.blocks_count; in dce_optimize_op_array() 672 || (has_varargs && may_break_varargs(op_array, ssa, &ssa->ops[i]))) { in dce_optimize_op_array() [all …]
|
H A D | zend_ssa.h | 166 zend_ssa_var *var = &ssa->vars[ssa_op->op1_def]; in zend_ssa_remove_op1_def() 173 zend_ssa_var *var = &ssa->vars[ssa_op->op2_def]; in zend_ssa_remove_op2_def() 227 ssa->vars[ssa_op->op1_def].definition = -1; in zend_ssa_rename_defs_of_instr() 234 ssa->vars[ssa_op->op2_def].definition = -1; in zend_ssa_rename_defs_of_instr() 241 ssa->vars[ssa_op->result_def].definition = -1; in zend_ssa_rename_defs_of_instr() 252 int _var_num = (var) - ssa->vars, next; \ 260 int _var_num = (var) - ssa->vars; \ 280 for (_i = 0; _i < ssa->cfg.blocks_count; _i++) { \ 281 phi = ssa->blocks[_i].phis; \ 290 for (_i = 0; _i < ssa->cfg.blocks_count; _i++) { \ [all …]
|
H A D | zend_ssa.c | 1014 if (!ssa->vars) { in zend_ssa_compute_use_def_chains() 1134 ssa->vars[var].use_chain = zend_ssa_next_use(ssa->ops, var, op); in zend_ssa_unlink_use_chain() 1142 ssa->ops[use].res_use_chain = zend_ssa_next_use(ssa->ops, var, op); in zend_ssa_unlink_use_chain() 1149 ssa->ops[use].op1_use_chain = zend_ssa_next_use(ssa->ops, var, op); in zend_ssa_unlink_use_chain() 1181 zend_ssa_unlink_use_chain(ssa, ssa_op - ssa->ops, ssa_op->op1_use); in zend_ssa_remove_instr() 1189 zend_ssa_unlink_use_chain(ssa, ssa_op - ssa->ops, ssa_op->op2_use); in zend_ssa_remove_instr() 1421 zend_ssa_remove_defs_of_instr(ssa, &ssa->ops[j]); in zend_ssa_remove_block() 1422 zend_ssa_remove_instr(ssa, &op_array->opcodes[j], &ssa->ops[j]); in zend_ssa_remove_block() 1476 if (ssa->var_info[var].type & ~ssa->var_info[phi->ssa_var].type) { in propagate_phi_type_widening() 1477 ssa->var_info[phi->ssa_var].type |= ssa->var_info[var].type; in propagate_phi_type_widening() [all …]
|
H A D | scdf.c | 85 scdf->ssa = ssa; in scdf_init() 105 zend_ssa *ssa = scdf->ssa; in scdf_solve() local 121 int block_num = ssa->cfg.map[i]; in scdf_solve() 125 zend_ssa_op *ssa_op = &ssa->ops[i]; in scdf_solve() 143 zend_basic_block *block = &ssa->cfg.blocks[i]; in scdf_solve() 144 zend_ssa_block *ssa_block = &ssa->blocks[i]; in scdf_solve() 190 const zend_cfg *cfg = &scdf->ssa->cfg; in kept_alive_by_live_range() 208 zend_ssa *ssa = scdf->ssa; in scdf_remove_unreachable_blocks() local 212 for (i = 0; i < ssa->cfg.blocks_count; i++) { in scdf_remove_unreachable_blocks() 216 removed_ops += ssa->cfg.blocks[i].len; in scdf_remove_unreachable_blocks() [all …]
|
H A D | ssa_integrity.c | 27 FOREACH_USE(&ssa->vars[var], use) { in is_in_use_chain() 37 FOREACH_PHI_USE(&ssa->vars[var], phi) { in is_in_phi_use_chain() 46 zend_ssa_op *ssa_op = &ssa->ops[op]; in is_used_by_op() 53 zend_ssa_op *ssa_op = &ssa->ops[op]; in is_defined_by_op() 106 (ssa->vars[i].var < op_array->last_var ? ZSTR_VAL(op_array->vars[ssa->vars[i].var]) : "") 113 zend_cfg *cfg = &ssa->cfg; in ssa_verify_integrity() 119 zend_ssa_var *var = &ssa->vars[i]; in ssa_verify_integrity() 152 if (!is_used_by_op(ssa, use, i)) { in ssa_verify_integrity() 178 zend_ssa_op *ssa_op = &ssa->ops[i]; in ssa_verify_integrity() 298 if (ssa->vars[source].var != ssa->vars[phi->ssa_var].var) { in ssa_verify_integrity() [all …]
|
H A D | zend_inference.c | 90 if (ssa->vars[var2].scc != ssa->vars[var].scc) { \ 194 ssa->vars[var].scc = ssa->sccs; in zend_ssa_check_scc_var() 201 ssa->vars[var2].scc = ssa->sccs; in zend_ssa_check_scc_var() 203 ssa->sccs++; in zend_ssa_check_scc_var() 234 ssa->vars[j].scc = ssa->sccs - (ssa->vars[j].scc + 1); in zend_ssa_find_sccs() 266 if (!op_array->function_name || !ssa->vars || !ssa->ops) { in zend_ssa_find_false_dependencies() 1349 …if (ssa->ops[line].op1_def == var || ssa->ops[line].op2_def == var || ssa->ops[line].result_def ==… in zend_inference_calc_range() 1385 op_array, ssa, opline, &ssa->ops[line], in zend_inference_calc_range() 1629 if (ssa->vars[var2].scc == ssa->vars[var].scc && \ 3774 if (info->ssa.ops && info->ssa.vars && info->call_map && in is_recursive_tail_call() [all …]
|
H A D | zend_dump.c | 400 if (!ssa || !ssa->ops || ssa->ops[opline - op_array->opcodes].result_use < 0) { in zend_dump_op() 402 if (ssa && ssa->ops && ssa->ops[opline - op_array->opcodes].result_def >= 0) { in zend_dump_op() 547 if (ssa && ssa->ops) { in zend_dump_op() 560 if (ssa && ssa->ops) { in zend_dump_op() 604 if (ssa && ssa->ops) { in zend_dump_op() 617 if (ssa && ssa->ops) { in zend_dump_op() 648 } else if (ssa && ssa->ops && ssa->ops[opline - op_array->opcodes].result_use >= 0) { in zend_dump_op() 650 if (ssa && ssa->ops) { in zend_dump_op() 660 if (ssa && ssa->ops) { in zend_dump_op() 770 if (ssa && ssa->blocks && ssa->blocks[n].phis) { in zend_dump_block_header() [all …]
|
H A D | scdf.h | 26 zend_ssa *ssa; member 49 void scdf_init(zend_optimizer_ctx *ctx, scdf_ctx *scdf, zend_op_array *op_array, zend_ssa *ssa); 56 zend_ssa *ssa = scdf->ssa; in scdf_add_to_worklist() local 57 zend_ssa_var *var = &ssa->vars[var_num]; in scdf_add_to_worklist() 70 zend_ssa_var *var = &scdf->ssa->vars[var_num]; in scdf_add_def_to_worklist() 93 uint32_t edge = scdf_edge(&scdf->ssa->cfg, from, to); in scdf_is_edge_feasible()
|
H A D | sccp.c | 247 block = &ctx->scdf.ssa->cfg.blocks[num]; in try_replace_op1() 259 block = &ctx->scdf.ssa->cfg.blocks[num]; in try_replace_op1() 273 block = &ctx->scdf.ssa->cfg.blocks[num]; in try_replace_op1() 1403 zend_ssa *ssa = scdf->ssa; in sccp_visit_phi() local 1437 zend_ssa *ssa = ctx->scdf.ssa; in value_from_type_and_range() local 1477 zend_ssa *ssa = ctx->scdf.ssa; in replace_constant_operands() local 1486 zend_ssa_var *var = &ssa->vars[i]; in replace_constant_operands() 1501 zend_ssa_op *ssa_op = &ssa->ops[use]; in replace_constant_operands() 1649 for (; i < ssa->vars_count; ++i) { in sccp_context_init() 1650 if (ssa->vars[i].alias) { in sccp_context_init() [all …]
|
H A D | zend_dump.h | 36 void zend_dump_phi_placement(const zend_op_array *op_array, const zend_ssa *ssa); 38 void zend_dump_ssa_variables(const zend_op_array *op_array, const zend_ssa *ssa, uint32_t dump_flag…
|
H A D | zend_optimizer_internal.h | 102 int zend_dfa_analyze_op_array(zend_op_array *op_array, zend_optimizer_ctx *ctx, zend_ssa *ssa, uin… 103 void zend_dfa_optimize_op_array(zend_op_array *op_array, zend_optimizer_ctx *ctx, zend_ssa *ssa, ze… 115 int sccp_optimize_op_array(zend_optimizer_ctx *ctx, zend_op_array *op_arrya, zend_ssa *ssa, zend_ca… 116 int dce_optimize_op_array(zend_op_array *op_array, zend_ssa *ssa, zend_bool reorder_dtor_effects);
|
H A D | zend_func_info.h | 54 uint32_t zend_get_func_info(const zend_call_info *call_info, const zend_ssa *ssa);
|
H A D | zend_call_graph.h | 51 zend_ssa ssa; /* Static Single Assignmnt Form */ member
|
H A D | zend_func_info.c | 29 typedef uint32_t (*info_func_t)(const zend_call_info *call_info, const zend_ssa *ssa); 60 static uint32_t zend_strlen_info(const zend_call_info *call_info, const zend_ssa *ssa) in zend_strlen_info() argument 88 static uint32_t zend_dechex_info(const zend_call_info *call_info, const zend_ssa *ssa) in zend_dechex_info() argument 101 static uint32_t zend_range_info(const zend_call_info *call_info, const zend_ssa *ssa) in zend_range_info() argument 112 t3 = _ssa_op1_info(call_info->caller_op_array, ssa, call_info->arg_info[2].opline); in zend_range_info() 134 static uint32_t zend_is_type_info(const zend_call_info *call_info, const zend_ssa *ssa) in zend_is_type_info() argument 144 static uint32_t zend_l_ss_info(const zend_call_info *call_info, const zend_ssa *ssa) in zend_l_ss_info() argument 169 static uint32_t zend_lb_ssn_info(const zend_call_info *call_info, const zend_ssa *ssa) in zend_lb_ssn_info() argument 196 static uint32_t zend_b_s_info(const zend_call_info *call_info, const zend_ssa *ssa) in zend_b_s_info() argument 1211 uint32_t zend_get_func_info(const zend_call_info *call_info, const zend_ssa *ssa) in zend_get_func_info() argument [all …]
|
H A D | zend_optimizer.c | 1112 static void zend_redo_pass_two_ex(zend_op_array *op_array, zend_ssa *ssa) in zend_redo_pass_two_ex() argument 1126 …((ssa->ops[opline - op_array->opcodes].op1_def >= 0) ? (OP1_DEF_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|… in zend_redo_pass_two_ex() 1255 zend_dfa_analyze_op_array(call_graph.op_arrays[i], &ctx, &func_info->ssa, &func_info->flags); in zend_optimize_script() 1263 zend_dfa_optimize_op_array(call_graph.op_arrays[i], &ctx, &func_info->ssa, func_info->call_map); in zend_optimize_script() 1299 if (func_info && func_info->ssa.var_info) { in zend_optimize_script() 1300 zend_redo_pass_two_ex(call_graph.op_arrays[i], &func_info->ssa); in zend_optimize_script()
|