Lines Matching refs:bb

245       BasicBlock* bb = GetBasicBlock(successor_block_info->block);
246 if (bb != nullptr) {
247 bb->ErasePredecessor(orig_block->id);
248 bb->predecessors.push_back(bottom_block->id);
273 p->bb = bottom_block->id;
277 p->bb = bottom_block->id;
303 BasicBlock* bb = GetBasicBlock(block_id);
305 if ((bb != nullptr) && (bb->start_offset == code_offset)) {
307 return bb;
315 if (bb != nullptr) {
317 BasicBlock* bottom_block = SplitBlock(code_offset, bb, bb == *immed_pred_block_p ? immed_pred_block_p : nullptr);
320 BasicBlock* orig_block = bb;
348 bb = CreateNewBB(kDalvikByteCode);
349 bb->start_offset = code_offset;
350 (*dex_pc_to_block_map)[bb->start_offset] = bb->id;
351 return bb;
987 BasicBlock* bb = GetBasicBlock(block_idx);
988 if (bb == nullptr) continue;
989 if (bb->block_type == kDead) continue;
990 if (bb->hidden) continue;
991 if (bb->block_type == kEntryBlock) {
992 fprintf(file, " entry_%d [shape=Mdiamond];\n", bb->id);
993 } else if (bb->block_type == kExitBlock) {
994 fprintf(file, " exit_%d [shape=Mdiamond];\n", bb->id);
995 } else if (bb->block_type == kDalvikByteCode) {
997 bb->start_offset, bb->id);
999 fprintf(file, " {block id %d\\l}%s\\\n", bb->id,
1000 bb->first_mir_insn ? " | " : " ");
1001 for (mir = bb->first_mir_insn; mir; mir = mir->next) {
1019 } else if (bb->block_type == kExceptionHandling) {
1022 GetBlockName(bb, block_name);
1028 if (bb->taken != NullBasicBlockId) {
1029 GetBlockName(bb, block_name1);
1030 GetBlockName(GetBasicBlock(bb->taken), block_name2);
1034 if (bb->fall_through != NullBasicBlockId) {
1035 GetBlockName(bb, block_name1);
1036 GetBlockName(GetBasicBlock(bb->fall_through), block_name2);
1040 if (bb->successor_block_list_type != kNotUsed) {
1042 bb->start_offset, bb->id,
1043 (bb->successor_block_list_type == kCatch) ? "Mrecord" : "record");
1045 int last_succ_id = static_cast<int>(bb->successor_blocks.size() - 1u);
1047 for (SuccessorBlockInfo* successor_block_info : bb->successor_blocks) {
1058 GetBlockName(bb, block_name1);
1060 block_name1, bb->start_offset, bb->id);
1064 for (SuccessorBlockInfo* successor_block_info : bb->successor_blocks) {
1068 fprintf(file, " succ%04x_%d:f%d:e -> %s:n\n", bb->start_offset,
1069 bb->id, succ_id++, block_name2);
1076 GetBlockName(bb, block_name1);
1079 if (bb->i_dom) {
1080 GetBlockName(GetBasicBlock(bb->i_dom), block_name2);
1137 mir->bb = id;
1207 mir->bb = id;
1238 mir->bb = NullBasicBlockId;
1673 void MIRGraph::GetBlockName(BasicBlock* bb, char* name) {
1674 switch (bb->block_type) {
1676 snprintf(name, BLOCK_NAME_LEN, "entry_%d", bb->id);
1679 snprintf(name, BLOCK_NAME_LEN, "exit_%d", bb->id);
1682 snprintf(name, BLOCK_NAME_LEN, "block%04x_%d", bb->start_offset, bb->id);
1685 snprintf(name, BLOCK_NAME_LEN, "exception%04x_%d", bb->start_offset,
1686 bb->id);
1689 snprintf(name, BLOCK_NAME_LEN, "_%d", bb->id);
1715 for (BasicBlock* bb : block_list_) {
1717 bb->id,
1718 block_type_names[bb->block_type],
1719 bb->start_offset,
1720 bb->last_mir_insn ? bb->last_mir_insn->offset : bb->start_offset,
1721 bb->last_mir_insn ? "" : " empty");
1722 if (bb->taken != NullBasicBlockId) {
1723 LOG(INFO) << " Taken branch: block " << bb->taken
1724 << "(0x" << std::hex << GetBasicBlock(bb->taken)->start_offset << ")";
1726 if (bb->fall_through != NullBasicBlockId) {
1727 LOG(INFO) << " Fallthrough : block " << bb->fall_through
1728 << " (0x" << std::hex << GetBasicBlock(bb->fall_through)->start_offset << ")";
1739 CallInfo* MIRGraph::NewMemCallInfo(BasicBlock* bb, MIR* mir, InvokeType type, bool is_range) {
1742 MIR* move_result_mir = FindMoveResult(bb, mir);
1779 BasicBlock* bb = new (arena_) BasicBlock(block_id, block_type, arena_);
1782 bb->predecessors.reserve((block_type == kExitBlock) ? 2048 : 2);
1784 return bb;
1948 for (BasicBlock* bb : block_list_) {
1949 if (bb->hidden == true) {
1955 if (bb->predecessors.size() == 0u) {
1957 q.push(bb);
1981 BasicBlock* bb = nullptr;
1985 bb = q.front();
1987 if (bb->visited) {
1991 topological_order_loop_ends_[topological_order_indexes_[bb->id]] = idx;
1992 DCHECK_EQ(loop_head_stack.back(), bb->id);
2015 bb = SelectTopologicalSortOrderFallBack(this, current_loop, &visited_cnt_values,
2017 DCHECK(bb != nullptr) << PrettyMethod(cu_->method_idx, *cu_->dex_file);
2020 << PrettyMethod(cu_->method_idx, *cu_->dex_file) << " BB #" << bb->id
2021 << " @0x" << std::hex << bb->start_offset
2044 bb = candidate;
2051 loop_head_reachable_from[bb->id] = reachable;
2052 ComputeUnvisitedReachableFrom(this, bb->id, reachable, &tmp_stack);
2054 loop_head_stack.push_back(bb->id);
2058 DCHECK_EQ(bb->hidden, false);
2059 DCHECK_EQ(bb->visited, false);
2060 bb->visited = true;
2061 bb->nesting_depth = loop_head_stack.size();
2065 topological_order_indexes_[bb->id] = idx;
2066 topological_order_.push_back(bb->id);
2069 ChildBlockIterator succIter(bb, this);
2104 ChildBlockIterator::ChildBlockIterator(BasicBlock* bb, MIRGraph* mir_graph)
2105 : basic_block_(bb), mir_graph_(mir_graph), visited_fallthrough_(false),
2207 res->bb = NullBasicBlockId;
2320 // Reset flags for all MIRs in bb.
2343 mir->bb = NullBasicBlockId;
2350 // Erase this bb from all children's predecessors and kill unreachable children.