Lines Matching refs:bb

208       BasicBlock* bb = GetBasicBlock(successor_block_info->block);
209 if (bb != nullptr) {
210 bb->predecessors->Delete(orig_block->id);
211 bb->predecessors->Insert(bottom_block->id);
241 p->bb = bottom_block->id;
273 BasicBlock* bb = (block_id == 0) ? NULL : block_list_.Get(block_id);
275 if ((bb != NULL) && (bb->start_offset == code_offset)) {
277 return bb;
285 if (bb != NULL) {
287 return SplitBlock(code_offset, bb, bb == *immed_pred_block_p ? immed_pred_block_p : NULL);
291 bb = NewMemBB(kDalvikByteCode, num_blocks_++);
292 block_list_.Insert(bb);
293 bb->start_offset = code_offset;
294 dex_pc_to_block_map_.Put(bb->start_offset, bb->id);
295 return bb;
900 BasicBlock* bb = GetBasicBlock(block_idx);
901 if (bb == NULL) continue;
902 if (bb->block_type == kDead) continue;
903 if (bb->hidden) continue;
904 if (bb->block_type == kEntryBlock) {
905 fprintf(file, " entry_%d [shape=Mdiamond];\n", bb->id);
906 } else if (bb->block_type == kExitBlock) {
907 fprintf(file, " exit_%d [shape=Mdiamond];\n", bb->id);
908 } else if (bb->block_type == kDalvikByteCode) {
910 bb->start_offset, bb->id);
912 fprintf(file, " {block id %d\\l}%s\\\n", bb->id,
913 bb->first_mir_insn ? " | " : " ");
914 for (mir = bb->first_mir_insn; mir; mir = mir->next) {
948 } else if (bb->block_type == kExceptionHandling) {
951 GetBlockName(bb, block_name);
957 if (bb->taken != NullBasicBlockId) {
958 GetBlockName(bb, block_name1);
959 GetBlockName(GetBasicBlock(bb->taken), block_name2);
963 if (bb->fall_through != NullBasicBlockId) {
964 GetBlockName(bb, block_name1);
965 GetBlockName(GetBasicBlock(bb->fall_through), block_name2);
969 if (bb->successor_block_list_type != kNotUsed) {
971 bb->start_offset, bb->id,
972 (bb->successor_block_list_type == kCatch) ? "Mrecord" : "record");
973 GrowableArray<SuccessorBlockInfo*>::Iterator iterator(bb->successor_blocks);
993 GetBlockName(bb, block_name1);
995 block_name1, bb->start_offset, bb->id);
998 GrowableArray<SuccessorBlockInfo*>::Iterator iter(bb->successor_blocks);
1008 fprintf(file, " succ%04x_%d:f%d:e -> %s:n\n", bb->start_offset,
1009 bb->id, succ_id++, block_name2);
1016 GetBlockName(bb, block_name1);
1019 if (bb->i_dom) {
1020 GetBlockName(GetBasicBlock(bb->i_dom), block_name2);
1077 mir->bb = id;
1147 mir->bb = id;
1178 mir->bb = NullBasicBlockId;
1382 void MIRGraph::GetBlockName(BasicBlock* bb, char* name) {
1383 switch (bb->block_type) {
1385 snprintf(name, BLOCK_NAME_LEN, "entry_%d", bb->id);
1388 snprintf(name, BLOCK_NAME_LEN, "exit_%d", bb->id);
1391 snprintf(name, BLOCK_NAME_LEN, "block%04x_%d", bb->start_offset, bb->id);
1394 snprintf(name, BLOCK_NAME_LEN, "exception%04x_%d", bb->start_offset,
1395 bb->id);
1398 snprintf(name, BLOCK_NAME_LEN, "_%d", bb->id);
1411 BasicBlock* bb;
1427 bb = iterator.Next();
1428 if (bb == NULL) break;
1430 bb->id,
1431 block_type_names[bb->block_type],
1432 bb->start_offset,
1433 bb->last_mir_insn ? bb->last_mir_insn->offset : bb->start_offset,
1434 bb->last_mir_insn ? "" : " empty");
1435 if (bb->taken != NullBasicBlockId) {
1436 LOG(INFO) << " Taken branch: block " << bb->taken
1437 << "(0x" << std::hex << GetBasicBlock(bb->taken)->start_offset << ")";
1439 if (bb->fall_through != NullBasicBlockId) {
1440 LOG(INFO) << " Fallthrough : block " << bb->fall_through
1441 << " (0x" << std::hex << GetBasicBlock(bb->fall_through)->start_offset << ")";
1452 CallInfo* MIRGraph::NewMemCallInfo(BasicBlock* bb, MIR* mir, InvokeType type,
1456 MIR* move_result_mir = FindMoveResult(bb, mir);
1486 BasicBlock* bb = new (arena_) BasicBlock();
1488 bb->block_type = block_type;
1489 bb->id = block_id;
1491 bb->predecessors = new (arena_) GrowableArray<BasicBlockId>(arena_,
1494 bb->successor_block_list_type = kNotUsed;
1496 return bb;
1630 for (BasicBlock* bb = iterator.Next(); bb != nullptr; bb = iterator.Next()) {
1631 if (bb->hidden == true) {
1637 if (bb->predecessors->Size() == 0u) {
1639 q.push(bb);
1671 BasicBlock* bb = nullptr;
1675 bb = q.front();
1677 if (bb->visited) {
1681 topological_order_loop_ends_->Put(topological_order_indexes_->Get(bb->id), idx);
1682 DCHECK_EQ(loop_head_stack.back(), bb->id);
1705 bb = SelectTopologicalSortOrderFallBack(this, current_loop, &visited_cnt_values,
1707 DCHECK(bb != nullptr) << PrettyMethod(cu_->method_idx, *cu_->dex_file);
1710 << PrettyMethod(cu_->method_idx, *cu_->dex_file) << " BB #" << bb->id
1711 << " @0x" << std::hex << bb->start_offset
1733 bb = candidate;
1740 loop_head_reachable_from[bb->id] = reachable;
1741 ComputeUnvisitedReachableFrom(this, bb->id, reachable, &tmp_stack);
1743 loop_head_stack.push_back(bb->id);
1747 DCHECK_EQ(bb->hidden, false);
1748 DCHECK_EQ(bb->visited, false);
1749 bb->visited = true;
1753 topological_order_indexes_->Put(bb->id, idx);
1754 topological_order_->Insert(bb->id);
1757 ChildBlockIterator succIter(bb, this);
1798 BasicBlock* bb = gen_suspend_test_list_.Get(idx);
1799 if (bb == source)
1801 if (source->dominators->IsBitSet(bb->id) && bb->dominators->IsBitSet(target_id))
1808 ChildBlockIterator::ChildBlockIterator(BasicBlock* bb, MIRGraph* mir_graph)
1809 : basic_block_(bb), mir_graph_(mir_graph), visited_fallthrough_(false),
1915 res->bb = NullBasicBlockId;
2024 // Reset flags for all MIRs in bb.
2040 mir->bb = NullBasicBlockId;
2058 // Iterate through children of bb we are hiding.