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()
59 if ((cfg->flags & ZEND_CFG_STACKLESS)) { in zend_mark_reachable()
70 if ((cfg->flags & ZEND_CFG_RECV_ENTRY)) { in zend_mark_reachable()
100 zend_mark_reachable(opcodes, cfg, succ); in zend_mark_reachable()
108 static void zend_mark_reachable_blocks(const zend_op_array *op_array, zend_cfg *cfg, int start) /* … in zend_mark_reachable_blocks() argument
110 zend_basic_block *blocks = cfg->blocks; in zend_mark_reachable_blocks()
113 zend_mark_reachable(op_array->opcodes, cfg, blocks + start); in zend_mark_reachable_blocks()
118 uint32_t *block_map = cfg->map; in zend_mark_reachable_blocks()
149 …zend_mark_reachable(op_array->opcodes, cfg, blocks + block_map[op_array->try_catch_array[j].try_op… in zend_mark_reachable_blocks()
166 zend_mark_reachable(op_array->opcodes, cfg, b); in zend_mark_reachable_blocks()
174 zend_mark_reachable(op_array->opcodes, cfg, b); in zend_mark_reachable_blocks()
182 zend_mark_reachable(op_array->opcodes, cfg, b); in zend_mark_reachable_blocks()
200 if (cfg->flags & ZEND_FUNC_FREE_LOOP_VAR) { in zend_mark_reachable_blocks()
203 uint32_t *block_map = cfg->map; in zend_mark_reachable_blocks()
206 for (b = blocks; b < blocks + cfg->blocks_count; b++) { in zend_mark_reachable_blocks()
229 void zend_cfg_remark_reachable_blocks(const zend_op_array *op_array, zend_cfg *cfg) /* {{{ */ in zend_cfg_remark_reachable_blocks() argument
231 zend_basic_block *blocks = cfg->blocks; in zend_cfg_remark_reachable_blocks()
235 for (i = 0; i < cfg->blocks_count; i++) { in zend_cfg_remark_reachable_blocks()
244 for (i = 0; i < cfg->blocks_count; i++) { in zend_cfg_remark_reachable_blocks()
248 zend_mark_reachable_blocks(op_array, cfg, start); in zend_cfg_remark_reachable_blocks()
270 …g(zend_arena **arena, const zend_op_array *op_array, uint32_t build_flags, zend_cfg *cfg) /* {{{ */ in zend_build_cfg() argument
282 cfg->flags = build_flags & (ZEND_CFG_STACKLESS|ZEND_CFG_RECV_ENTRY); in zend_build_cfg()
284 cfg->map = block_map = zend_arena_calloc(arena, op_array->last, sizeof(uint32_t)); in zend_build_cfg()
464 cfg->blocks_count = blocks_count; in zend_build_cfg()
467 cfg->blocks = blocks = zend_arena_calloc(arena, sizeof(zend_basic_block), blocks_count); in zend_build_cfg()
587 cfg->flags |= flags; in zend_build_cfg()
588 zend_mark_reachable_blocks(op_array, cfg, 0); in zend_build_cfg()
592 ZEND_API void zend_cfg_build_predecessors(zend_arena **arena, zend_cfg *cfg) /* {{{ */ in zend_cfg_build_predecessors() argument
596 zend_basic_block *blocks = cfg->blocks; in zend_cfg_build_predecessors()
597 zend_basic_block *end = blocks + cfg->blocks_count; in zend_cfg_build_predecessors()
616 cfg->edges_count = edges; in zend_cfg_build_predecessors()
617 cfg->predecessors = predecessors = (int*)zend_arena_calloc(arena, sizeof(int), edges); in zend_cfg_build_predecessors()
628 for (j = 0; j < cfg->blocks_count; j++) { in zend_cfg_build_predecessors()
655 int *postnum, int *cur, const zend_cfg *cfg, int block_num) /* {{{ */ in compute_postnum_recursive() argument
658 zend_basic_block *block = &cfg->blocks[block_num]; in compute_postnum_recursive()
665 compute_postnum_recursive(postnum, cur, cfg, block->successors[s]); in compute_postnum_recursive()
673 ZEND_API void zend_cfg_compute_dominators_tree(const zend_op_array *op_array, zend_cfg *cfg) /* {{{… in zend_cfg_compute_dominators_tree() argument
675 zend_basic_block *blocks = cfg->blocks; in zend_cfg_compute_dominators_tree()
676 int blocks_count = cfg->blocks_count; in zend_cfg_compute_dominators_tree()
679 if (cfg->blocks_count == 1) { in zend_cfg_compute_dominators_tree()
685 int *postnum = do_alloca(sizeof(int) * cfg->blocks_count, use_heap); in zend_cfg_compute_dominators_tree()
686 memset(postnum, -1, sizeof(int) * cfg->blocks_count); in zend_cfg_compute_dominators_tree()
688 compute_postnum_recursive(postnum, &j, cfg, 0); in zend_cfg_compute_dominators_tree()
702 int pred = cfg->predecessors[blocks[j].predecessor_offset + k]; in zend_cfg_compute_dominators_tree()
775 ZEND_API void zend_cfg_identify_loops(const zend_op_array *op_array, zend_cfg *cfg) /* {{{ */ in zend_cfg_identify_loops() argument
779 zend_basic_block *blocks = cfg->blocks; in zend_cfg_identify_loops()
787 if (cfg->blocks_count == 1) { in zend_cfg_identify_loops()
788 cfg->flags |= flag; in zend_cfg_identify_loops()
792 ZEND_WORKLIST_ALLOCA(&work, cfg->blocks_count, list_use_heap); in zend_cfg_identify_loops()
796 entry_times = do_alloca(3 * sizeof(int) * cfg->blocks_count, tree_use_heap); in zend_cfg_identify_loops()
797 exit_times = entry_times + cfg->blocks_count; in zend_cfg_identify_loops()
798 sorted_blocks = exit_times + cfg->blocks_count; in zend_cfg_identify_loops()
799 memset(entry_times, -1, 2 * sizeof(int) * cfg->blocks_count); in zend_cfg_identify_loops()
853 int pred = cfg->predecessors[blocks[i].predecessor_offset + j]; in zend_cfg_identify_loops()
867 zend_bitset_clear(work.visited, zend_bitset_len(cfg->blocks_count)); in zend_cfg_identify_loops()
892 zend_worklist_push(&work, cfg->predecessors[blocks[j].predecessor_offset + k]); in zend_cfg_identify_loops()
901 cfg->flags |= flag; in zend_cfg_identify_loops()