Lines Matching refs:block

526 …tic zend_always_inline void take_successor_0(zend_ssa *ssa, int block_num, zend_basic_block *block)  in take_successor_0()  argument
528 if (block->successors_count == 2) { in take_successor_0()
529 if (block->successors[1] != block->successors[0]) { in take_successor_0()
530 zend_ssa_remove_predecessor(ssa, block_num, block->successors[1]); in take_successor_0()
532 block->successors_count = 1; in take_successor_0()
536 …tic zend_always_inline void take_successor_1(zend_ssa *ssa, int block_num, zend_basic_block *block) in take_successor_1() argument
538 if (block->successors_count == 2) { in take_successor_1()
539 if (block->successors[1] != block->successors[0]) { in take_successor_1()
540 zend_ssa_remove_predecessor(ssa, block_num, block->successors[0]); in take_successor_1()
541 block->successors[0] = block->successors[1]; in take_successor_1()
543 block->successors_count = 1; in take_successor_1()
547 …ine void take_successor_ex(zend_ssa *ssa, int block_num, zend_basic_block *block, int target_block) in take_successor_ex() argument
551 for (i = 0; i < block->successors_count; i++) { in take_successor_ex()
552 if (block->successors[i] != target_block) { in take_successor_ex()
553 zend_ssa_remove_predecessor(ssa, block_num, block->successors[i]); in take_successor_ex()
556 block->successors[0] = target_block; in take_successor_ex()
557 block->successors_count = 1; in take_successor_ex()
560 static void compress_block(zend_op_array *op_array, zend_basic_block *block) in compress_block() argument
562 while (block->len > 0) { in compress_block()
563 zend_op *opline = &op_array->opcodes[block->start + block->len - 1]; in compress_block()
566 block->len--; in compress_block()
574 zend_basic_block *block = &ssa->cfg.blocks[block_id]; in replace_predecessor() local
575 int *predecessors = &ssa->cfg.predecessors[block->predecessor_offset]; in replace_predecessor()
581 for (i = 0; i < block->predecessors_count; i++) { in replace_predecessor()
600 sizeof(int) * (block->predecessors_count - old_pred_idx - 1) in replace_predecessor()
615 sizeof(int) * (block->predecessors_count - old_pred_idx - 1) in replace_predecessor()
620 block->predecessors_count--; in replace_predecessor()
700 static void zend_ssa_unlink_block(zend_op_array *op_array, zend_ssa *ssa, zend_basic_block *block, … in zend_ssa_unlink_block() argument
702 if (block->predecessors_count == 1 && ssa->blocks[block_num].phis == NULL) { in zend_ssa_unlink_block()
706 ZEND_ASSERT(block->successors_count == 1); in zend_ssa_unlink_block()
707 predecessors = &ssa->cfg.predecessors[block->predecessor_offset]; in zend_ssa_unlink_block()
708 if (block->predecessors_count == 1 && (block->flags & ZEND_BB_FOLLOW)) { in zend_ssa_unlink_block()
719 for (i = 0; i < block->predecessors_count; i++) { in zend_ssa_unlink_block()
720 zend_ssa_replace_control_link(op_array, ssa, predecessors[i], block_num, block->successors[0]); in zend_ssa_unlink_block()
739 zend_basic_block *block = &ssa->cfg.blocks[block_num]; in zend_dfa_optimize_jmps() local
741 if (!(block->flags & ZEND_BB_REACHABLE)) { in zend_dfa_optimize_jmps()
744 compress_block(op_array, block); in zend_dfa_optimize_jmps()
745 if (block->len == 0) { in zend_dfa_optimize_jmps()
746 zend_ssa_unlink_block(op_array, ssa, block, block_num); in zend_dfa_optimize_jmps()
757 zend_basic_block *block = &ssa->cfg.blocks[block_num]; in zend_dfa_optimize_jmps() local
771 if (block->len) { in zend_dfa_optimize_jmps()
772 op_num = block->start + block->len - 1; in zend_dfa_optimize_jmps()
779 if (block->successors[0] == next_block_num && can_follow) { in zend_dfa_optimize_jmps()
791 take_successor_1(ssa, block_num, block); in zend_dfa_optimize_jmps()
796 take_successor_0(ssa, block_num, block); in zend_dfa_optimize_jmps()
800 if (block->successors[0] == next_block_num && can_follow) { in zend_dfa_optimize_jmps()
801 take_successor_0(ssa, block_num, block); in zend_dfa_optimize_jmps()
822 take_successor_0(ssa, block_num, block); in zend_dfa_optimize_jmps()
827 take_successor_1(ssa, block_num, block); in zend_dfa_optimize_jmps()
830 } else if (block->successors_count == 2) { in zend_dfa_optimize_jmps()
831 if (block->successors[0] == next_block_num && can_follow) { in zend_dfa_optimize_jmps()
832 take_successor_0(ssa, block_num, block); in zend_dfa_optimize_jmps()
852 take_successor_1(ssa, block_num, block); in zend_dfa_optimize_jmps()
856 take_successor_0(ssa, block_num, block); in zend_dfa_optimize_jmps()
862 } else if (block->successors_count == 2) { in zend_dfa_optimize_jmps()
863 if (block->successors[0] == block->successors[1]) { in zend_dfa_optimize_jmps()
864 take_successor_0(ssa, block_num, block); in zend_dfa_optimize_jmps()
865 if (block->successors[0] == next_block_num && can_follow) { in zend_dfa_optimize_jmps()
900 take_successor_1(ssa, block_num, block); in zend_dfa_optimize_jmps()
914 take_successor_1(ssa, block_num, block); in zend_dfa_optimize_jmps()
929 take_successor_1(ssa, block_num, block); in zend_dfa_optimize_jmps()
944 take_successor_1(ssa, block_num, block); in zend_dfa_optimize_jmps()
951 take_successor_0(ssa, block_num, block); in zend_dfa_optimize_jmps()
967 take_successor_0(ssa, block_num, block); in zend_dfa_optimize_jmps()
973 take_successor_1(ssa, block_num, block); in zend_dfa_optimize_jmps()
994 take_successor_ex(ssa, block_num, block, block->successors[block->successors_count - 1]); in zend_dfa_optimize_jmps()
1013 take_successor_ex(ssa, block_num, block, ssa->cfg.map[target]); in zend_dfa_optimize_jmps()
1020 compress_block(op_array, block); in zend_dfa_optimize_jmps()
1021 if (block->len == 0) { in zend_dfa_optimize_jmps()
1023 zend_ssa_unlink_block(op_array, ssa, block, block_num); in zend_dfa_optimize_jmps()