Lines Matching refs:cfg

27 static void zend_mark_reachable(zend_op *opcodes, zend_cfg *cfg, zend_basic_block *b) /* {{{ */  in zend_mark_reachable()  argument
32 zend_basic_block *blocks = cfg->blocks; in zend_mark_reachable()
43 zend_mark_reachable(opcodes, cfg, b0); in zend_mark_reachable()
62 if (cfg->split_at_calls) { in zend_mark_reachable()
73 if (cfg->split_at_recv) { in zend_mark_reachable()
93 static void zend_mark_reachable_blocks(const zend_op_array *op_array, zend_cfg *cfg, int start) /* … in zend_mark_reachable_blocks() argument
95 zend_basic_block *blocks = cfg->blocks; in zend_mark_reachable_blocks()
98 zend_mark_reachable(op_array->opcodes, cfg, blocks + start); in zend_mark_reachable_blocks()
103 uint32_t *block_map = cfg->map; in zend_mark_reachable_blocks()
139 if (cfg->split_at_live_ranges) { in zend_mark_reachable_blocks()
141 zend_mark_reachable(op_array->opcodes, cfg, b); 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()
195 zend_mark_reachable(op_array->opcodes, cfg, b); in zend_mark_reachable_blocks()
203 zend_mark_reachable(op_array->opcodes, cfg, b); in zend_mark_reachable_blocks()
211 zend_mark_reachable(op_array->opcodes, cfg, b); in zend_mark_reachable_blocks()
231 void zend_cfg_remark_reachable_blocks(const zend_op_array *op_array, zend_cfg *cfg) /* {{{ */ in zend_cfg_remark_reachable_blocks() argument
233 zend_basic_block *blocks = cfg->blocks; in zend_cfg_remark_reachable_blocks()
237 for (i = 0; i < cfg->blocks_count; i++) { in zend_cfg_remark_reachable_blocks()
246 for (i = 0; i < cfg->blocks_count; i++) { in zend_cfg_remark_reachable_blocks()
250 zend_mark_reachable_blocks(op_array, cfg, start); in zend_cfg_remark_reachable_blocks()
277 …na **arena, const zend_op_array *op_array, uint32_t build_flags, zend_cfg *cfg, uint32_t *func_fla… in zend_build_cfg() argument
289 cfg->split_at_live_ranges = (build_flags & ZEND_CFG_SPLIT_AT_LIVE_RANGES) != 0; in zend_build_cfg()
290 cfg->split_at_calls = (build_flags & ZEND_CFG_STACKLESS) != 0; in zend_build_cfg()
291cfg->split_at_recv = (build_flags & ZEND_CFG_RECV_ENTRY) != 0 && (op_array->fn_flags & ZEND_ACC_HA… in zend_build_cfg()
293 cfg->map = block_map = zend_arena_calloc(arena, op_array->last, sizeof(uint32_t)); in zend_build_cfg()
436 if (cfg->split_at_live_ranges) { in zend_build_cfg()
459 cfg->blocks_count = blocks_count; in zend_build_cfg()
462 cfg->blocks = blocks = zend_arena_calloc(arena, sizeof(zend_basic_block), blocks_count); in zend_build_cfg()
556 zend_mark_reachable_blocks(op_array, cfg, 0); in zend_build_cfg()
566 int zend_cfg_build_predecessors(zend_arena **arena, zend_cfg *cfg) /* {{{ */ in zend_cfg_build_predecessors() argument
570 zend_basic_block *blocks = cfg->blocks; in zend_cfg_build_predecessors()
571 zend_basic_block *end = blocks + cfg->blocks_count; in zend_cfg_build_predecessors()
595 cfg->predecessors = predecessors = (int*)zend_arena_calloc(arena, sizeof(int), edges); in zend_cfg_build_predecessors()
610 for (j = 0; j < cfg->blocks_count; j++) { in zend_cfg_build_predecessors()
632 int *postnum, int *cur, const zend_cfg *cfg, int block_num) /* {{{ */ in compute_postnum_recursive() argument
634 zend_basic_block *block = &cfg->blocks[block_num]; in compute_postnum_recursive()
641 compute_postnum_recursive(postnum, cur, cfg, block->successors[0]); in compute_postnum_recursive()
643 compute_postnum_recursive(postnum, cur, cfg, block->successors[1]); in compute_postnum_recursive()
652 int zend_cfg_compute_dominators_tree(const zend_op_array *op_array, zend_cfg *cfg) /* {{{ */ in zend_cfg_compute_dominators_tree() argument
654 zend_basic_block *blocks = cfg->blocks; in zend_cfg_compute_dominators_tree()
655 int blocks_count = cfg->blocks_count; in zend_cfg_compute_dominators_tree()
659 int *postnum = do_alloca(sizeof(int) * cfg->blocks_count, use_heap); in zend_cfg_compute_dominators_tree()
660 memset(postnum, -1, sizeof(int) * cfg->blocks_count); in zend_cfg_compute_dominators_tree()
662 compute_postnum_recursive(postnum, &j, cfg, 0); in zend_cfg_compute_dominators_tree()
676 int pred = cfg->predecessors[blocks[j].predecessor_offset + k]; in zend_cfg_compute_dominators_tree()
765 int zend_cfg_identify_loops(const zend_op_array *op_array, zend_cfg *cfg, uint32_t *flags) /* {{{ */ in zend_cfg_identify_loops() argument
769 zend_basic_block *blocks = cfg->blocks; in zend_cfg_identify_loops()
778 ZEND_WORKLIST_ALLOCA(&work, cfg->blocks_count, list_use_heap); in zend_cfg_identify_loops()
782 entry_times = do_alloca(2 * sizeof(int) * cfg->blocks_count, tree_use_heap); in zend_cfg_identify_loops()
783 exit_times = entry_times + cfg->blocks_count; in zend_cfg_identify_loops()
784 memset(entry_times, -1, 2 * sizeof(int) * cfg->blocks_count); in zend_cfg_identify_loops()
816 sorted_blocks = do_alloca(sizeof(block_info) * cfg->blocks_count, sorted_blocks_use_heap); in zend_cfg_identify_loops()
817 for (i = 0; i < cfg->blocks_count; i++) { in zend_cfg_identify_loops()
821 zend_sort(sorted_blocks, cfg->blocks_count, sizeof(block_info), in zend_cfg_identify_loops()
827 for (n = 0; n < cfg->blocks_count; n++) { in zend_cfg_identify_loops()
830 zend_bitset_clear(work.visited, zend_bitset_len(cfg->blocks_count)); in zend_cfg_identify_loops()
832 int pred = cfg->predecessors[blocks[i].predecessor_offset + j]; in zend_cfg_identify_loops()
864 zend_worklist_push(&work, cfg->predecessors[blocks[j].predecessor_offset + k]); in zend_cfg_identify_loops()