Lines Matching refs:cfg

132 	if (ssa->cfg.blocks[ssa->cfg.map[use]].loop_header > 0  in zend_ssa_is_last_use()
133 || (ssa->cfg.blocks[ssa->cfg.map[use]].flags & ZEND_BB_LOOP_HEADER)) { in zend_ssa_is_last_use()
134 int b = ssa->cfg.map[use]; in zend_ssa_is_last_use()
139 def_block =ssa->cfg.map[ssa->vars[var].definition]; in zend_ssa_is_last_use()
144 if (dominates(ssa->cfg.blocks, def_block, in zend_ssa_is_last_use()
145 (ssa->cfg.blocks[b].flags & ZEND_BB_LOOP_HEADER) ? b : ssa->cfg.blocks[b].loop_header)) { in zend_ssa_is_last_use()
150 if (b != ssa->cfg.map[prev_use] in zend_ssa_is_last_use()
151 && dominates(ssa->cfg.blocks, b, ssa->cfg.map[prev_use]) in zend_ssa_is_last_use()
385 if (end - op_array->opcodes >= ssa->cfg.blocks[b].start + ssa->cfg.blocks[b].len) { in zend_jit_needs_call_chain()
400 if (!end || end - op_array->opcodes >= ssa->cfg.blocks[b].start + ssa->cfg.blocks[b].len) { in zend_jit_needs_call_chain()
485 for (j = 0; j < ssa->cfg.blocks_count; j++) { in zend_ssa_cv_info()
486 if ((ssa->cfg.blocks[j].flags & ZEND_BB_REACHABLE) && in zend_ssa_cv_info()
487 ssa->cfg.blocks[j].len > 0) { in zend_ssa_cv_info()
488 … const zend_op *opline = op_array->opcodes + ssa->cfg.blocks[j].start + ssa->cfg.blocks[j].len - 1; in zend_ssa_cv_info()
924 static int zend_jit_build_cfg(const zend_op_array *op_array, zend_cfg *cfg) in zend_jit_build_cfg() argument
930 zend_build_cfg(&CG(arena), op_array, flags, cfg); in zend_jit_build_cfg()
935 if (cfg->blocks_count > 100000) { in zend_jit_build_cfg()
939 zend_cfg_build_predecessors(&CG(arena), cfg); in zend_jit_build_cfg()
942 zend_cfg_compute_dominators_tree(op_array, cfg); in zend_jit_build_cfg()
945 zend_cfg_identify_loops(op_array, cfg); in zend_jit_build_cfg()
952 if (zend_jit_build_cfg(op_array, &ssa->cfg) != SUCCESS) { in zend_jit_op_array_analyze1()
958 if ((ssa->cfg.flags & ZEND_FUNC_HAS_EXTENDED_INFO)) { in zend_jit_op_array_analyze1()
965 ssa->cfg.flags |= ZEND_FUNC_INDIRECT_VAR_ACCESS; in zend_jit_op_array_analyze1()
969 && ssa->cfg.blocks in zend_jit_op_array_analyze1()
972 && !(ssa->cfg.flags & ZEND_FUNC_INDIRECT_VAR_ACCESS)) { in zend_jit_op_array_analyze1()
990 && ssa->cfg.blocks in zend_jit_op_array_analyze2()
993 && !(ssa->cfg.flags & ZEND_FUNC_INDIRECT_VAR_ACCESS)) { in zend_jit_op_array_analyze2()
1044 for (k = 0; k < ssa->cfg.blocks[phi->block].predecessors_count; k++) { in zend_jit_allocate_registers()
1066 for (k = 0; k < ssa->cfg.blocks[phi->block].predecessors_count; k++) { in zend_jit_allocate_registers()
1195 static int zend_jit_compute_post_order(zend_cfg *cfg, int start, int *post_order) in zend_jit_compute_post_order() argument
1203 ZEND_WORKLIST_ALLOCA(&worklist, cfg->blocks_count, use_heap); in zend_jit_compute_post_order()
1209 bb = &cfg->blocks[b]; in zend_jit_compute_post_order()
1214 if (cfg->blocks[*p].flags & (ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END)) { in zend_jit_compute_post_order()
1303 if (ssa->cfg.flags & ZEND_FUNC_IRREDUCIBLE) { in zend_jit()
1310 ssa->cfg.blocks[ssa->cfg.map[rt_opline - op_array->opcodes]].flags |= ZEND_BB_ENTRY; in zend_jit()
1321 int *sorted_blocks = alloca(sizeof(int) * ssa->cfg.blocks_count); in zend_jit()
1322 int n = zend_jit_compute_post_order(&ssa->cfg, 0, sorted_blocks); in zend_jit()
1326 if ((ssa->cfg.blocks[b].flags & ZEND_BB_REACHABLE) == 0) { in zend_jit()
1330 if (ssa->cfg.blocks[b].flags & (ZEND_BB_START|ZEND_BB_RECV_ENTRY)) { in zend_jit()
1331 opline = op_array->opcodes + ssa->cfg.blocks[b].start; in zend_jit()
1332 if (ssa->cfg.flags & ZEND_CFG_RECV_ENTRY) { in zend_jit()
1359 ssa->cfg.blocks[b].len == 1 && in zend_jit()
1360 (ssa->cfg.blocks[b].flags & ZEND_BB_EXIT)) { in zend_jit()
1371 ssa->cfg.blocks[b].len == 1 && in zend_jit()
1372 (ssa->cfg.blocks[b].flags & ZEND_BB_EXIT)) { in zend_jit()
1404 && (ssa->cfg.blocks[b].flags & (ZEND_BB_START|ZEND_BB_RECV_ENTRY)) == 0 in zend_jit()
1405 && rt_opline == op_array->opcodes + ssa->cfg.blocks[b].start) { in zend_jit()
1410 if ((ssa->cfg.blocks[b].flags & ZEND_BB_FOLLOW) in zend_jit()
1411 && ssa->cfg.blocks[b].start != 0 in zend_jit()
1412 && (op_array->opcodes[ssa->cfg.blocks[b].start - 1].opcode == ZEND_NOP in zend_jit()
1413 || op_array->opcodes[ssa->cfg.blocks[b].start - 1].opcode == ZEND_SWITCH_LONG in zend_jit()
1414 || op_array->opcodes[ssa->cfg.blocks[b].start - 1].opcode == ZEND_SWITCH_STRING in zend_jit()
1415 || op_array->opcodes[ssa->cfg.blocks[b].start - 1].opcode == ZEND_MATCH)) { in zend_jit()
1418 zend_jit_set_last_valid_opline(&ctx, op_array->opcodes + ssa->cfg.blocks[b].start); in zend_jit()
1420 } else if (ssa->cfg.blocks[b].flags & ZEND_BB_TARGET) { in zend_jit()
1422 } else if (ssa->cfg.blocks[b].flags & ZEND_BB_RECV_ENTRY) { in zend_jit()
1424 } else if (ssa->cfg.blocks[b].flags & (ZEND_BB_START|ZEND_BB_ENTRY)) { in zend_jit()
1425 zend_jit_set_last_valid_opline(&ctx, op_array->opcodes + ssa->cfg.blocks[b].start); in zend_jit()
1427 if (ssa->cfg.blocks[b].flags & ZEND_BB_LOOP_HEADER) { in zend_jit()
1428 zend_jit_check_timeout(&ctx, op_array->opcodes + ssa->cfg.blocks[b].start, NULL); in zend_jit()
1430 if (!ssa->cfg.blocks[b].len) { in zend_jit()
1458 end = ssa->cfg.blocks[b].start + ssa->cfg.blocks[b].len - 1; in zend_jit()
1459 for (i = ssa->cfg.blocks[b].start; i <= end; i++) { in zend_jit()
2038 target_label = ssa->cfg.blocks[b].successors[0]; in zend_jit()
2039 target_label2 = ssa->cfg.blocks[b].successors[1]; in zend_jit()
2074 target_label = ssa->cfg.blocks[b].successors[0]; in zend_jit()
2075 target_label2 = ssa->cfg.blocks[b].successors[1]; in zend_jit()
2104 target_label = ssa->cfg.blocks[b].successors[0]; in zend_jit()
2105 target_label2 = ssa->cfg.blocks[b].successors[1]; in zend_jit()
2127 target_label = ssa->cfg.blocks[b].successors[0]; in zend_jit()
2128 target_label2 = ssa->cfg.blocks[b].successors[1]; in zend_jit()
2167 if (opline > op_array->opcodes + ssa->cfg.blocks[b].start && in zend_jit()
2170 if (!zend_jit_cond_jmp(&ctx, opline + 1, ssa->cfg.blocks[b].successors[0])) { in zend_jit()
2185 ssa->cfg.blocks[b].successors[0], ssa->cfg.blocks[b].successors[1], in zend_jit()
2204 target_label = ssa->cfg.blocks[b].successors[0]; in zend_jit()
2205 target_label2 = ssa->cfg.blocks[b].successors[1]; in zend_jit()
2233 target_label = ssa->cfg.blocks[b].successors[0]; in zend_jit()
2234 target_label2 = ssa->cfg.blocks[b].successors[1]; in zend_jit()
2293 target_label = ssa->cfg.blocks[b].successors[0]; in zend_jit()
2294 target_label2 = ssa->cfg.blocks[b].successors[1]; in zend_jit()
2456 ssa->cfg.blocks[b].successors[0], opline->opcode, NULL)) { in zend_jit()
2588 if (opline > op_array->opcodes + ssa->cfg.blocks[b].start && in zend_jit()
2591 if (!zend_jit_cond_jmp(&ctx, opline + 1, ssa->cfg.blocks[b].successors[0])) { in zend_jit()
2610 !zend_jit_cond_jmp(&ctx, opline + 1, ssa->cfg.blocks[b].successors[0])) { in zend_jit()
2648 ZEND_ASSERT(b + 1 == ssa->cfg.blocks[b].successors[0]); in zend_jit()
2730 NULL, NULL, (ssa->cfg.flags & ZEND_FUNC_INDIRECT_VAR_ACCESS) != 0, 1)) { in zend_jit()
2972 static void zend_jit_setup_hot_counters_ex(zend_op_array *op_array, zend_cfg *cfg) in zend_jit_setup_hot_counters_ex() argument
2989 for (i = 0; i < cfg->blocks_count; i++) { in zend_jit_setup_hot_counters_ex()
2990 if ((cfg->blocks[i].flags & ZEND_BB_REACHABLE) && in zend_jit_setup_hot_counters_ex()
2991 (cfg->blocks[i].flags & ZEND_BB_LOOP_HEADER)) { in zend_jit_setup_hot_counters_ex()
2992 op_array->opcodes[cfg->blocks[i].start].handler = in zend_jit_setup_hot_counters_ex()
3002 zend_cfg cfg; in zend_jit_restart_hot_counters() local
3010 if (zend_jit_build_cfg(op_array, &cfg) != SUCCESS) { in zend_jit_restart_hot_counters()
3014 zend_jit_setup_hot_counters_ex(op_array, &cfg); in zend_jit_restart_hot_counters()
3022 zend_cfg cfg; in zend_jit_setup_hot_counters() local
3028 if (zend_jit_build_cfg(op_array, &cfg) != SUCCESS) { in zend_jit_setup_hot_counters()
3044 zend_jit_setup_hot_counters_ex(op_array, &cfg); in zend_jit_setup_hot_counters()
3164 info->ssa.cfg.flags |= info->flags; in zend_jit_script()
3165 info->flags = info->ssa.cfg.flags; in zend_jit_script()
3185 info->flags = info->ssa.cfg.flags; in zend_jit_script()