Lines Matching refs:blocks

32 	zend_basic_block *blocks = cfg->blocks;  in zend_mark_reachable()  local
40 b0 = blocks + successor_0; in zend_mark_reachable()
48 b = blocks + successor_1; in zend_mark_reachable()
56 b = blocks + successor_0; in zend_mark_reachable()
81 b = blocks + successor_0; in zend_mark_reachable()
95 zend_basic_block *blocks = cfg->blocks; in zend_mark_reachable_blocks() local
97 blocks[start].flags = ZEND_BB_START; in zend_mark_reachable_blocks()
98 zend_mark_reachable(op_array->opcodes, cfg, blocks + start); in zend_mark_reachable_blocks()
115 b = blocks + block_map[live_range->start]; in zend_mark_reachable_blocks()
136 b = blocks + block_map[live_range->end]; in zend_mark_reachable_blocks()
148 ZEND_ASSERT(!(blocks[block_map[live_range->end]].flags & ZEND_BB_REACHABLE)); in zend_mark_reachable_blocks()
156 b = blocks + block_map[op_array->try_catch_array[j].try_op]; in zend_mark_reachable_blocks()
161 end = blocks + block_map[op_array->try_catch_array[j].catch_op]; in zend_mark_reachable_blocks()
170 b = blocks + block_map[op_array->try_catch_array[j].try_op]; in zend_mark_reachable_blocks()
173 end = blocks + block_map[op_array->try_catch_array[j].finally_op]; in zend_mark_reachable_blocks()
178 …zend_mark_reachable(op_array->opcodes, cfg, blocks + block_map[op_array->try_catch_array[j].try_op… in zend_mark_reachable_blocks()
187 b = blocks + block_map[op_array->try_catch_array[j].try_op]; in zend_mark_reachable_blocks()
191 b = blocks + block_map[op_array->try_catch_array[j].catch_op]; in zend_mark_reachable_blocks()
199 b = blocks + block_map[op_array->try_catch_array[j].finally_op]; in zend_mark_reachable_blocks()
207 b = blocks + block_map[op_array->try_catch_array[j].finally_end]; in zend_mark_reachable_blocks()
216 …ZEND_ASSERT(!(blocks[block_map[op_array->try_catch_array[j].catch_op]].flags & ZEND_BB_REACHABLE)); in zend_mark_reachable_blocks()
219 …ZEND_ASSERT(!(blocks[block_map[op_array->try_catch_array[j].finally_op]].flags & ZEND_BB_REACHABLE… in zend_mark_reachable_blocks()
222 …ZEND_ASSERT(!(blocks[block_map[op_array->try_catch_array[j].finally_end]].flags & ZEND_BB_REACHABL… in zend_mark_reachable_blocks()
233 zend_basic_block *blocks = cfg->blocks; in zend_cfg_remark_reachable_blocks() local
238 if (blocks[i].flags & ZEND_BB_REACHABLE) { in zend_cfg_remark_reachable_blocks()
247 blocks[i].flags = 0; in zend_cfg_remark_reachable_blocks()
254 static void record_successor(zend_basic_block *blocks, int pred, int n, int succ) in record_successor() argument
256 blocks[pred].successors[n] = succ; in record_successor()
285 zend_basic_block *blocks; in zend_build_cfg() local
462 cfg->blocks = blocks = zend_arena_calloc(arena, sizeof(zend_basic_block), blocks_count); in zend_build_cfg()
463 if (!blocks) { in zend_build_cfg()
470 initialize_block(&blocks[0]); in zend_build_cfg()
471 blocks[0].start = 0; in zend_build_cfg()
472 blocks[0].len = 0; in zend_build_cfg()
479 blocks[blocks_count].len = i - blocks[blocks_count].start; in zend_build_cfg()
482 initialize_block(&blocks[blocks_count]); in zend_build_cfg()
483 blocks[blocks_count].start = i; in zend_build_cfg()
488 blocks[blocks_count].len = i - blocks[blocks_count].start; in zend_build_cfg()
494 if (blocks[j].len == 0) { in zend_build_cfg()
495 record_successor(blocks, j, 0, j + 1); in zend_build_cfg()
499 opline = op_array->opcodes + blocks[j].start + blocks[j].len - 1; in zend_build_cfg()
509 record_successor(blocks, j, 0, block_map[OP_JMP_ADDR(opline, opline->op1) - op_array->opcodes]); in zend_build_cfg()
512 record_successor(blocks, j, 0, block_map[OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes]); in zend_build_cfg()
513 …record_successor(blocks, j, 1, block_map[ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->exten… in zend_build_cfg()
522 record_successor(blocks, j, 0, block_map[OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes]); in zend_build_cfg()
523 record_successor(blocks, j, 1, j + 1); in zend_build_cfg()
527 …record_successor(blocks, j, 0, block_map[ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->exten… in zend_build_cfg()
528 record_successor(blocks, j, 1, j + 1); in zend_build_cfg()
530 record_successor(blocks, j, 0, j + 1); in zend_build_cfg()
537 …record_successor(blocks, j, 0, block_map[ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->exten… in zend_build_cfg()
538 record_successor(blocks, j, 1, j + 1); in zend_build_cfg()
542 record_successor(blocks, j, 0, block_map[OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes]); in zend_build_cfg()
543 record_successor(blocks, j, 1, j + 1); in zend_build_cfg()
546 record_successor(blocks, j, 0, block_map[OP_JMP_ADDR(opline, opline->op1) - op_array->opcodes]); in zend_build_cfg()
547 record_successor(blocks, j, 1, j + 1); in zend_build_cfg()
550 record_successor(blocks, j, 0, j + 1); in zend_build_cfg()
570 zend_basic_block *blocks = cfg->blocks; in zend_cfg_build_predecessors() local
571 zend_basic_block *end = blocks + cfg->blocks_count; in zend_cfg_build_predecessors()
575 for (b = blocks; b < end; b++) { in zend_cfg_build_predecessors()
578 for (b = blocks; b < end; b++) { in zend_cfg_build_predecessors()
586 blocks[b->successors[0]].predecessors_count++; in zend_cfg_build_predecessors()
589 blocks[b->successors[1]].predecessors_count++; in zend_cfg_build_predecessors()
602 for (b = blocks; b < end; b++) { in zend_cfg_build_predecessors()
611 if (blocks[j].flags & ZEND_BB_REACHABLE) { in zend_cfg_build_predecessors()
612 if (blocks[j].successors[0] >= 0) { in zend_cfg_build_predecessors()
613 zend_basic_block *b = blocks + blocks[j].successors[0]; in zend_cfg_build_predecessors()
616 if (blocks[j].successors[1] >= 0 in zend_cfg_build_predecessors()
617 && blocks[j].successors[1] != blocks[j].successors[0]) { in zend_cfg_build_predecessors()
618 zend_basic_block *b = blocks + blocks[j].successors[1]; in zend_cfg_build_predecessors()
634 zend_basic_block *block = &cfg->blocks[block_num]; in compute_postnum_recursive()
654 zend_basic_block *blocks = cfg->blocks; in zend_cfg_compute_dominators_tree() local
665 blocks[0].idom = 0; in zend_cfg_compute_dominators_tree()
672 if ((blocks[j].flags & ZEND_BB_REACHABLE) == 0) { in zend_cfg_compute_dominators_tree()
675 for (k = 0; k < blocks[j].predecessors_count; k++) { in zend_cfg_compute_dominators_tree()
676 int pred = cfg->predecessors[blocks[j].predecessor_offset + k]; in zend_cfg_compute_dominators_tree()
679 if (blocks[pred].idom >= 0) in zend_cfg_compute_dominators_tree()
684 if (blocks[pred].idom >= 0) { in zend_cfg_compute_dominators_tree()
686 while (postnum[pred] < postnum[idom]) pred = blocks[pred].idom; in zend_cfg_compute_dominators_tree()
687 while (postnum[idom] < postnum[pred]) idom = blocks[idom].idom; in zend_cfg_compute_dominators_tree()
692 if (idom >= 0 && blocks[j].idom != idom) { in zend_cfg_compute_dominators_tree()
693 blocks[j].idom = idom; in zend_cfg_compute_dominators_tree()
698 blocks[0].idom = -1; in zend_cfg_compute_dominators_tree()
701 if ((blocks[j].flags & ZEND_BB_REACHABLE) == 0) { in zend_cfg_compute_dominators_tree()
704 if (blocks[j].idom >= 0) { in zend_cfg_compute_dominators_tree()
706 if (blocks[blocks[j].idom].children < 0 || in zend_cfg_compute_dominators_tree()
707 j < blocks[blocks[j].idom].children) { in zend_cfg_compute_dominators_tree()
708 blocks[j].next_child = blocks[blocks[j].idom].children; in zend_cfg_compute_dominators_tree()
709 blocks[blocks[j].idom].children = j; in zend_cfg_compute_dominators_tree()
711 int k = blocks[blocks[j].idom].children; in zend_cfg_compute_dominators_tree()
712 while (blocks[k].next_child >=0 && j > blocks[k].next_child) { in zend_cfg_compute_dominators_tree()
713 k = blocks[k].next_child; in zend_cfg_compute_dominators_tree()
715 blocks[j].next_child = blocks[k].next_child; in zend_cfg_compute_dominators_tree()
716 blocks[k].next_child = j; in zend_cfg_compute_dominators_tree()
722 int idom = blocks[j].idom, level = 0; in zend_cfg_compute_dominators_tree()
723 if ((blocks[j].flags & ZEND_BB_REACHABLE) == 0) { in zend_cfg_compute_dominators_tree()
728 if (blocks[idom].level >= 0) { in zend_cfg_compute_dominators_tree()
729 level += blocks[idom].level; in zend_cfg_compute_dominators_tree()
732 idom = blocks[idom].idom; in zend_cfg_compute_dominators_tree()
735 blocks[j].level = level; in zend_cfg_compute_dominators_tree()
743 static int dominates(zend_basic_block *blocks, int a, int b) /* {{{ */ in dominates() argument
745 while (blocks[b].level > blocks[a].level) { in dominates()
746 b = blocks[b].idom; in dominates()
769 zend_basic_block *blocks = cfg->blocks; in zend_cfg_identify_loops() local
795 for (j = blocks[i].children; j >= 0; j = blocks[j].next_child) { in zend_cfg_identify_loops()
802 int succ = blocks[i].successors[j]; in zend_cfg_identify_loops()
805 } else if (blocks[succ].idom == i) { in zend_cfg_identify_loops()
819 sorted_blocks[i].level = blocks[i].level; in zend_cfg_identify_loops()
831 for (j = 0; j < blocks[i].predecessors_count; j++) { in zend_cfg_identify_loops()
832 int pred = cfg->predecessors[blocks[i].predecessor_offset + j]; in zend_cfg_identify_loops()
836 if (blocks[i].idom == pred) { in zend_cfg_identify_loops()
842 if (dominates(blocks, i, pred)) { in zend_cfg_identify_loops()
843 blocks[i].flags |= ZEND_BB_LOOP_HEADER; in zend_cfg_identify_loops()
850 blocks[i].flags |= ZEND_BB_IRREDUCIBLE_LOOP; in zend_cfg_identify_loops()
858 while (blocks[j].loop_header >= 0) { in zend_cfg_identify_loops()
859 j = blocks[j].loop_header; in zend_cfg_identify_loops()
862 blocks[j].loop_header = i; in zend_cfg_identify_loops()
863 for (k = 0; k < blocks[j].predecessors_count; k++) { in zend_cfg_identify_loops()
864 zend_worklist_push(&work, cfg->predecessors[blocks[j].predecessor_offset + k]); in zend_cfg_identify_loops()