Lines Matching refs:bb

138   BasicBlock* bb = mir_graph_->FindBlock(vaddr);
139 DCHECK(bb != NULL);
140 return GetLLVMBlock(bb->id);
143 void MirConverter::ConvertPackedSwitch(BasicBlock* bb,
152 irb_->CreateSwitch(value, GetLLVMBlock(bb->fall_through),
163 bb->taken = NullBasicBlockId;
164 bb->fall_through = NullBasicBlockId;
167 void MirConverter::ConvertSparseSwitch(BasicBlock* bb,
179 irb_->CreateSwitch(value, GetLLVMBlock(bb->fall_through),
190 bb->taken = NullBasicBlockId;
191 bb->fall_through = NullBasicBlockId;
329 void MirConverter::ConvertCompareAndBranch(BasicBlock* bb, MIR* mir,
331 if (mir_graph_->GetBasicBlock(bb->taken)->start_offset <= mir->offset) {
338 irb_->CreateCondBr(cond_value, GetLLVMBlock(bb->taken),
339 GetLLVMBlock(bb->fall_through));
341 bb->fall_through = NullBasicBlockId;
344 void MirConverter::ConvertCompareZeroAndBranch(BasicBlock* bb,
346 if (mir_graph_->GetBasicBlock(bb->taken)->start_offset <= mir->offset) {
357 irb_->CreateCondBr(cond_value, GetLLVMBlock(bb->taken),
358 GetLLVMBlock(bb->fall_through));
360 bb->fall_through = NullBasicBlockId;
467 void MirConverter::ConvertInvoke(BasicBlock* bb, MIR* mir,
469 CallInfo* info = mir_graph_->NewMemCallInfo(bb, mir, invoke_type, is_range);
703 bool MirConverter::ConvertMIRNode(MIR* mir, BasicBlock* bb,
901 DCHECK(bb->terminated_by_return);
917 DCHECK(bb->terminated_by_return);
922 ConvertCompareAndBranch(bb, mir, kCondEq, rl_src[0], rl_src[1]);
925 ConvertCompareAndBranch(bb, mir, kCondNe, rl_src[0], rl_src[1]);
928 ConvertCompareAndBranch(bb, mir, kCondLt, rl_src[0], rl_src[1]);
931 ConvertCompareAndBranch(bb, mir, kCondGe, rl_src[0], rl_src[1]);
934 ConvertCompareAndBranch(bb, mir, kCondGt, rl_src[0], rl_src[1]);
937 ConvertCompareAndBranch(bb, mir, kCondLe, rl_src[0], rl_src[1]);
940 ConvertCompareZeroAndBranch(bb, mir, kCondEq, rl_src[0]);
943 ConvertCompareZeroAndBranch(bb, mir, kCondNe, rl_src[0]);
946 ConvertCompareZeroAndBranch(bb, mir, kCondLt, rl_src[0]);
949 ConvertCompareZeroAndBranch(bb, mir, kCondGe, rl_src[0]);
952 ConvertCompareZeroAndBranch(bb, mir, kCondGt, rl_src[0]);
955 ConvertCompareZeroAndBranch(bb, mir, kCondLe, rl_src[0]);
961 if (mir_graph_->GetBasicBlock(bb->taken)->start_offset <= bb->start_offset) {
964 irb_->CreateBr(GetLLVMBlock(bb->taken));
1128 ConvertInvoke(bb, mir, kStatic, false /*range*/,
1132 ConvertInvoke(bb, mir, kStatic, true /*range*/,
1137 ConvertInvoke(bb, mir, kDirect, false /*range*/,
1141 ConvertInvoke(bb, mir, kDirect, true /*range*/,
1146 ConvertInvoke(bb, mir, kVirtual, false /*range*/,
1150 ConvertInvoke(bb, mir, kVirtual, true /*range*/,
1155 ConvertInvoke(bb, mir, kSuper, false /*range*/,
1159 ConvertInvoke(bb, mir, kSuper, true /*range*/,
1164 ConvertInvoke(bb, mir, kInterface, false /*range*/,
1168 ConvertInvoke(bb, mir, kInterface, true /*range*/,
1172 ConvertInvoke(bb, mir, kInterface, false /*range*/,
1176 ConvertInvoke(bb, mir, kInterface, true /*range*/,
1210 if (bb->fall_through == NullBasicBlockId) {
1213 mir_graph_->GetBasicBlock(bb->fall_through)->fall_through = NullBasicBlockId;
1214 mir_graph_->GetBasicBlock(bb->fall_through)->taken = NullBasicBlockId;
1508 ConvertPackedSwitch(bb, vB, rl_src[0]);
1512 ConvertSparseSwitch(bb, vB, rl_src[0]);
1549 void MirConverter::HandlePhiNodes(BasicBlock* bb, ::llvm::BasicBlock* llvm_bb) {
1550 SetDexOffset(bb->start_offset);
1551 for (MIR* mir = bb->first_mir_insn; mir != NULL; mir = mir->next) {
1598 void MirConverter::ConvertExtendedMIR(BasicBlock* bb, MIR* mir,
1617 if ((mir == bb->last_mir_insn) && (bb->taken == NullBasicBlockId) &&
1618 (bb->fall_through == NullBasicBlockId)) {
1645 bool MirConverter::BlockBitcodeConversion(BasicBlock* bb) {
1646 if (bb->block_type == kDead) return false;
1647 ::llvm::BasicBlock* llvm_bb = GetLLVMBlock(bb->id);
1649 CHECK(bb->block_type == kExitBlock);
1652 SetDexOffset(bb->start_offset);
1657 LOG(INFO) << "Block id " << bb->id;
1665 if (bb->block_type == kEntryBlock) {
1704 } else if (bb->block_type == kExitBlock) {
1711 } else if (bb->block_type == kExceptionHandling) {
1720 HandlePhiNodes(bb, llvm_bb);
1722 for (MIR* mir = bb->first_mir_insn; mir != NULL; mir = mir->next) {
1738 if (bb->successor_block_list_type == kCatch) {
1743 GrowableArray<SuccessorBlockInfo*>::Iterator iter(bb->successor_blocks);
1748 irb_->CreateSwitch(switch_key, work_bb, bb->successor_blocks->Size());
1763 ConvertExtendedMIR(bb, mir, llvm_bb);
1767 bool not_handled = ConvertMIRNode(mir, bb, llvm_bb);
1777 if (bb->block_type == kEntryBlock) {
1778 entry_target_bb_ = GetLLVMBlock(bb->fall_through);
1779 } else if ((bb->fall_through != NullBasicBlockId) && !bb->terminated_by_return) {
1780 irb_->CreateBr(GetLLVMBlock(bb->fall_through));
1856 bool MirConverter::CreateLLVMBasicBlock(BasicBlock* bb) {
1858 if ((bb->block_type == kDead) ||(bb->block_type == kExitBlock)) {
1859 id_to_block_map_.Put(bb->id, NULL);
1861 int offset = bb->start_offset;
1862 bool entry_block = (bb->block_type == kEntryBlock);
1865 StringPrintf(kLabelFormat, bb->catch_entry ? kCatchBlock :
1866 kNormalBlock, offset, bb->id), func_);
1873 id_to_block_map_.Put(bb->id, llvm_bb);
1895 for (BasicBlock* bb = iter.Next(); bb != NULL; bb = iter.Next()) {
1896 CreateLLVMBasicBlock(bb);
1927 for (BasicBlock* bb = iter2.Next(); bb != NULL; bb = iter2.Next()) {
1928 BlockBitcodeConversion(bb);