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
29 zend_basic_block *blocks = cfg->blocks; in zend_mark_reachable()
51 if ((cfg->flags & ZEND_CFG_STACKLESS)) { in zend_mark_reachable()
62 if ((cfg->flags & ZEND_CFG_RECV_ENTRY)) { in zend_mark_reachable()
98 zend_mark_reachable(opcodes, cfg, succ); in zend_mark_reachable()
106 static void zend_mark_reachable_blocks(const zend_op_array *op_array, zend_cfg *cfg, int start) /* … in zend_mark_reachable_blocks() argument
108 zend_basic_block *blocks = cfg->blocks; in zend_mark_reachable_blocks()
111 zend_mark_reachable(op_array->opcodes, cfg, blocks + start); in zend_mark_reachable_blocks()
116 uint32_t *block_map = cfg->map; in zend_mark_reachable_blocks()
147 …zend_mark_reachable(op_array->opcodes, cfg, blocks + block_map[op_array->try_catch_array[j].try_op… in zend_mark_reachable_blocks()
164 zend_mark_reachable(op_array->opcodes, cfg, b); in zend_mark_reachable_blocks()
172 zend_mark_reachable(op_array->opcodes, cfg, b); in zend_mark_reachable_blocks()
180 zend_mark_reachable(op_array->opcodes, cfg, b); in zend_mark_reachable_blocks()
198 if (cfg->flags & ZEND_FUNC_FREE_LOOP_VAR) { in zend_mark_reachable_blocks()
201 uint32_t *block_map = cfg->map; in zend_mark_reachable_blocks()
204 for (b = blocks; b < blocks + cfg->blocks_count; b++) { in zend_mark_reachable_blocks()
227 void zend_cfg_remark_reachable_blocks(const zend_op_array *op_array, zend_cfg *cfg) /* {{{ */ in zend_cfg_remark_reachable_blocks() argument
229 zend_basic_block *blocks = cfg->blocks; in zend_cfg_remark_reachable_blocks()
233 for (i = 0; i < cfg->blocks_count; i++) { in zend_cfg_remark_reachable_blocks()
242 for (i = 0; i < cfg->blocks_count; i++) { in zend_cfg_remark_reachable_blocks()
246 zend_mark_reachable_blocks(op_array, cfg, start); in zend_cfg_remark_reachable_blocks()
268 …g(zend_arena **arena, const zend_op_array *op_array, uint32_t build_flags, zend_cfg *cfg) /* {{{ */ in zend_build_cfg() argument
280 cfg->flags = build_flags & (ZEND_CFG_STACKLESS|ZEND_CFG_RECV_ENTRY); in zend_build_cfg()
282 cfg->map = block_map = zend_arena_calloc(arena, op_array->last, sizeof(uint32_t)); in zend_build_cfg()
457 cfg->blocks_count = blocks_count; in zend_build_cfg()
460 cfg->blocks = blocks = zend_arena_calloc(arena, sizeof(zend_basic_block), blocks_count); in zend_build_cfg()
578 cfg->flags |= flags; in zend_build_cfg()
579 zend_mark_reachable_blocks(op_array, cfg, 0); in zend_build_cfg()
585 int zend_cfg_build_predecessors(zend_arena **arena, zend_cfg *cfg) /* {{{ */ in zend_cfg_build_predecessors() argument
589 zend_basic_block *blocks = cfg->blocks; in zend_cfg_build_predecessors()
590 zend_basic_block *end = blocks + cfg->blocks_count; in zend_cfg_build_predecessors()
609 cfg->edges_count = edges; in zend_cfg_build_predecessors()
610 cfg->predecessors = predecessors = (int*)zend_arena_calloc(arena, sizeof(int), edges); in zend_cfg_build_predecessors()
621 for (j = 0; j < cfg->blocks_count; j++) { in zend_cfg_build_predecessors()
650 int *postnum, int *cur, const zend_cfg *cfg, int block_num) /* {{{ */ in compute_postnum_recursive() argument
653 zend_basic_block *block = &cfg->blocks[block_num]; in compute_postnum_recursive()
660 compute_postnum_recursive(postnum, cur, cfg, block->successors[s]); in compute_postnum_recursive()
668 int zend_cfg_compute_dominators_tree(const zend_op_array *op_array, zend_cfg *cfg) /* {{{ */ in zend_cfg_compute_dominators_tree() argument
670 zend_basic_block *blocks = cfg->blocks; in zend_cfg_compute_dominators_tree()
671 int blocks_count = cfg->blocks_count; in zend_cfg_compute_dominators_tree()
675 int *postnum = do_alloca(sizeof(int) * cfg->blocks_count, use_heap); in zend_cfg_compute_dominators_tree()
676 memset(postnum, -1, sizeof(int) * cfg->blocks_count); in zend_cfg_compute_dominators_tree()
678 compute_postnum_recursive(postnum, &j, cfg, 0); in zend_cfg_compute_dominators_tree()
692 int pred = cfg->predecessors[blocks[j].predecessor_offset + k]; in zend_cfg_compute_dominators_tree()
781 int zend_cfg_identify_loops(const zend_op_array *op_array, zend_cfg *cfg) /* {{{ */ in zend_cfg_identify_loops() argument
785 zend_basic_block *blocks = cfg->blocks; in zend_cfg_identify_loops()
794 ZEND_WORKLIST_ALLOCA(&work, cfg->blocks_count, list_use_heap); in zend_cfg_identify_loops()
798 entry_times = do_alloca(2 * sizeof(int) * cfg->blocks_count, tree_use_heap); in zend_cfg_identify_loops()
799 exit_times = entry_times + cfg->blocks_count; in zend_cfg_identify_loops()
800 memset(entry_times, -1, 2 * sizeof(int) * cfg->blocks_count); in zend_cfg_identify_loops()
830 sorted_blocks = do_alloca(sizeof(block_info) * cfg->blocks_count, sorted_blocks_use_heap); in zend_cfg_identify_loops()
831 for (i = 0; i < cfg->blocks_count; i++) { in zend_cfg_identify_loops()
835 zend_sort(sorted_blocks, cfg->blocks_count, sizeof(block_info), in zend_cfg_identify_loops()
841 for (n = 0; n < cfg->blocks_count; n++) { in zend_cfg_identify_loops()
844 zend_bitset_clear(work.visited, zend_bitset_len(cfg->blocks_count)); in zend_cfg_identify_loops()
846 int pred = cfg->predecessors[blocks[i].predecessor_offset + j]; in zend_cfg_identify_loops()
878 zend_worklist_push(&work, cfg->predecessors[blocks[j].predecessor_offset + k]); in zend_cfg_identify_loops()
888 cfg->flags |= flag; in zend_cfg_identify_loops()