/art/compiler/optimizing/ |
H A D | dead_code_elimination.cc | 74 for (HBasicBlock* successor : live_successors) { 76 if (!visited->IsBitSet(successor->GetBlockId())) { 77 visited->SetBit(successor->GetBlockId()); 78 worklist.push_back(successor); 143 HBasicBlock* successor = block->GetSingleSuccessor(); local 144 if (successor->IsExitBlock() || successor->GetPredecessors().size() != 1u) { 148 block->MergeWith(successor); 150 // Reiterate on this block in case it can be merged with its new successor.
|
H A D | nodes.cc | 77 HBasicBlock* successor = current->GetSuccessors()[successors_visited[current_id]++]; local 78 uint32_t successor_id = successor->GetBlockId(); 80 DCHECK(ContainsElement(worklist, successor)); 81 successor->AddBackEdge(current); 85 worklist.push_back(successor); 129 // We only need to update the successor, which might be live. 130 for (HBasicBlock* successor : block->GetSuccessors()) { 131 successor->RemovePredecessor(block); 211 static bool UpdateDominatorOfSuccessor(HBasicBlock* block, HBasicBlock* successor) { argument 212 DCHECK(ContainsElement(block->GetSuccessors(), successor)); 250 HBasicBlock* successor = current->GetSuccessors()[successors_visited[current_id]++]; local 311 SplitEdge(HBasicBlock* block, HBasicBlock* successor) argument 320 SplitCriticalEdge(HBasicBlock* block, HBasicBlock* successor) argument 420 HBasicBlock* successor = normal_successors[j]; local 1871 HBasicBlock* successor = other->GetSuccessors()[0]; local 1908 HBasicBlock* successor = other->GetSuccessors()[0]; local 1928 HBasicBlock* successor = GetSuccessors()[0]; local [all...] |
H A D | ssa_liveness_analysis.cc | 85 // successor block are visited, the successor block is added in the worklist 94 for (HBasicBlock* successor : current->GetSuccessors()) { 95 int block_id = successor->GetBlockId(); 98 AddToListForLinearization(&worklist, successor); 220 for (HBasicBlock* successor : block->GetSuccessors()) { 221 live_in->Union(GetLiveInSet(*successor)); 222 if (successor->IsCatchBlock()) { 232 size_t phi_input_index = successor->GetPredecessorIndexOf(block); 233 for (HInstructionIterator phi_it(successor [all...] |
H A D | block_builder.cc | 39 // Create the first block for the dex instructions, single successor of the entry block. 329 // the successor is not in the same TryItem. 334 HBasicBlock* successor = try_block->GetSuccessors()[i]; local 336 // If the successor is a try block, all of its predecessors must be 339 if (GetTryItem(successor, try_block_info) != nullptr) { 340 DCHECK_EQ(entry.second, GetTryItem(successor, try_block_info)); 346 new (arena_) HTryBoundary(HTryBoundary::BoundaryKind::kExit, successor->GetDexPc()); 347 graph_->SplitEdge(try_block, successor)->AddInstruction(try_exit);
|
H A D | graph_checker.cc | 154 for (HBasicBlock* successor : block->GetNormalSuccessors()) { 155 if (successor->IsCatchBlock()) { 156 AddError(StringPrintf("Catch block %d is a normal successor of block %d.", 157 successor->GetBlockId(), 161 for (HBasicBlock* successor : block->GetExceptionalSuccessors()) { 162 if (!successor->IsCatchBlock()) { 163 AddError(StringPrintf("Normal block %d is an exceptional successor of block %d.", 164 successor->GetBlockId(), 186 for (HBasicBlock* successor : block->GetNormalSuccessors()) { 187 if (successor 515 HBasicBlock* successor = ret->GetBlock()->GetSingleSuccessor(); local 525 HBasicBlock* successor = ret->GetBlock()->GetSingleSuccessor(); local [all...] |
H A D | bounds_check_elimination.cc | 615 // and push the narrowed value range to `successor`. 617 HBasicBlock* successor, ValueRange* range) { 621 AssignRange(successor, instruction, range); 633 AssignRange(successor, instruction, existing_range->Narrow(range)); 658 HBasicBlock* successor = nullptr; local 664 successor = instruction->IfTrueSuccessor(); 666 successor = instruction->IfTrueSuccessor(); 668 successor = instruction->IfFalseSuccessor(); 672 successor = instruction->IfFalseSuccessor(); 679 if (successor ! 616 ApplyRangeFromComparison(HInstruction* instruction, HBasicBlock* basic_block, HBasicBlock* successor, ValueRange* range) argument [all...] |
H A D | code_generator_mips.h | 223 void GenerateSuspendCheck(HSuspendCheck* check, HBasicBlock* successor); 249 void HandleGoto(HInstruction* got, HBasicBlock* successor);
|
H A D | code_generator_mips64.h | 223 void GenerateSuspendCheck(HSuspendCheck* check, HBasicBlock* successor); 249 void HandleGoto(HInstruction* got, HBasicBlock* successor);
|
H A D | gvn.cc | 367 // successor blocks. 433 // `block` is a direct successor of its dominator. No need to clone the 525 for (auto successor : block->GetSuccessors()) { 526 if (!visited_blocks_.IsBitSet(successor->GetBlockId())) {
|
H A D | code_generator_arm.h | 213 // Generate code for the given suspend check. If not null, `successor` 216 void GenerateSuspendCheck(HSuspendCheck* check, HBasicBlock* successor); 289 void HandleGoto(HInstruction* got, HBasicBlock* successor);
|
H A D | code_generator_arm64.h | 214 void GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor); 274 void HandleGoto(HInstruction* got, HBasicBlock* successor);
|
H A D | code_generator_x86.h | 206 // Generate code for the given suspend check. If not null, `successor` 209 void GenerateSuspendCheck(HSuspendCheck* check, HBasicBlock* successor); 290 void HandleGoto(HInstruction* got, HBasicBlock* successor);
|
H A D | code_generator_x86_64.h | 207 // Generate code for the given suspend check. If not null, `successor` 210 void GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor); 279 void HandleGoto(HInstruction* got, HBasicBlock* successor);
|
H A D | code_generator_mips64.cc | 292 SuspendCheckSlowPathMIPS64(HSuspendCheck* instruction, HBasicBlock* successor) argument 293 : SlowPathCodeMIPS64(instruction), successor_(successor) {} 993 HBasicBlock* successor) { 995 new (GetGraph()->GetArena()) SuspendCheckSlowPathMIPS64(instruction, successor); 1002 if (successor == nullptr) { 1006 __ Beqzc(TMP, codegen_->GetLabelOf(successor)); 1008 // slow_path will return to GetLabelOf(successor). 2203 void InstructionCodeGeneratorMIPS64::HandleGoto(HInstruction* got, HBasicBlock* successor) { argument 2204 DCHECK(!successor->IsExitBlock()); 2211 GenerateSuspendCheck(info->GetSuspendCheck(), successor); 992 GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor) argument 2235 HBasicBlock* successor = try_boundary->GetNormalFlowSuccessor(); local [all...] |
H A D | code_generator_arm64.cc | 392 SuspendCheckSlowPathARM64(HSuspendCheck* instruction, HBasicBlock* successor) argument 393 : SlowPathCodeARM64(instruction), successor_(successor) {} 1514 HBasicBlock* successor) { 1518 slow_path = new (GetGraph()->GetArena()) SuspendCheckSlowPathARM64(instruction, successor); 1521 if (successor != nullptr) { 1522 DCHECK(successor->IsLoopHeader()); 1526 DCHECK_EQ(slow_path->GetSuccessor(), successor); 1533 if (successor == nullptr) { 1537 __ Cbz(temp, codegen_->GetLabelOf(successor)); 1539 // slow_path will return to GetLabelOf(successor) 1513 GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor) argument 2768 HandleGoto(HInstruction* got, HBasicBlock* successor) argument 2800 HBasicBlock* successor = try_boundary->GetNormalFlowSuccessor(); local [all...] |
H A D | graph_visualizer.cc | 269 for (HBasicBlock* successor : block->GetNormalSuccessors()) { 270 output_ << " \"B" << successor->GetBlockId() << "\" ";
|
H A D | code_generator_mips.cc | 339 SuspendCheckSlowPathMIPS(HSuspendCheck* instruction, HBasicBlock* successor) argument 340 : SlowPathCodeMIPS(instruction), successor_(successor) {} 1111 HBasicBlock* successor) { 1113 new (GetGraph()->GetArena()) SuspendCheckSlowPathMIPS(instruction, successor); 1120 if (successor == nullptr) { 1124 __ Beqz(TMP, codegen_->GetLabelOf(successor)); 1126 // slow_path will return to GetLabelOf(successor). 2584 void InstructionCodeGeneratorMIPS::HandleGoto(HInstruction* got, HBasicBlock* successor) { argument 2585 DCHECK(!successor->IsExitBlock()); 2592 GenerateSuspendCheck(info->GetSuspendCheck(), successor); 1110 GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor) argument 2612 HBasicBlock* successor = try_boundary->GetNormalFlowSuccessor(); local [all...] |
H A D | code_generator_arm.cc | 115 SuspendCheckSlowPathARM(HSuspendCheck* instruction, HBasicBlock* successor) argument 116 : SlowPathCode(instruction), successor_(successor) {} 1209 void InstructionCodeGeneratorARM::HandleGoto(HInstruction* got, HBasicBlock* successor) { argument 1210 DCHECK(!successor->IsExitBlock()); 1218 GenerateSuspendCheck(info->GetSuspendCheck(), successor); 1225 if (!codegen_->GoesToNextBlock(got->GetBlock(), successor)) { 1226 __ b(codegen_->GetLabelOf(successor)); 1243 HBasicBlock* successor = try_boundary->GetNormalFlowSuccessor(); local 1244 if (!successor->IsExitBlock()) { 1245 HandleGoto(try_boundary, successor); 4822 GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor) argument [all...] |
H A D | code_generator_x86.cc | 167 SuspendCheckSlowPathX86(HSuspendCheck* instruction, HBasicBlock* successor) argument 168 : SlowPathCode(instruction), successor_(successor) {} 1125 void InstructionCodeGeneratorX86::HandleGoto(HInstruction* got, HBasicBlock* successor) { argument 1126 DCHECK(!successor->IsExitBlock()); 1133 GenerateSuspendCheck(info->GetSuspendCheck(), successor); 1140 if (!codegen_->GoesToNextBlock(got->GetBlock(), successor)) { 1141 __ jmp(codegen_->GetLabelOf(successor)); 1158 HBasicBlock* successor = try_boundary->GetNormalFlowSuccessor(); local 1159 if (!successor->IsExitBlock()) { 1160 HandleGoto(try_boundary, successor); 5586 GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor) argument [all...] |
H A D | code_generator_x86_64.cc | 145 SuspendCheckSlowPathX86_64(HSuspendCheck* instruction, HBasicBlock* successor) argument 146 : SlowPathCode(instruction), successor_(successor) {} 1226 void InstructionCodeGeneratorX86_64::HandleGoto(HInstruction* got, HBasicBlock* successor) { argument 1227 DCHECK(!successor->IsExitBlock()); 1234 GenerateSuspendCheck(info->GetSuspendCheck(), successor); 1241 if (!codegen_->GoesToNextBlock(got->GetBlock(), successor)) { 1242 __ jmp(codegen_->GetLabelOf(successor)); 1259 HBasicBlock* successor = try_boundary->GetNormalFlowSuccessor(); local 1260 if (!successor->IsExitBlock()) { 1261 HandleGoto(try_boundary, successor); 5081 GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor) argument [all...] |
H A D | nodes.h | 375 // Splits the edge between `block` and `successor` while preserving the 376 // indices in the predecessor/successor lists. If there are multiple edges 378 // Returns the new block which is empty and has the same dex pc as `successor`. 379 HBasicBlock* SplitEdge(HBasicBlock* block, HBasicBlock* successor); 381 void SplitCriticalEdge(HBasicBlock* block, HBasicBlock* successor); 931 // Insert `this` between `predecessor` and `successor. This method 933 // `predecessor` and `successor`. 934 void InsertBetween(HBasicBlock* predecessor, HBasicBlock* successor) { argument 935 size_t predecessor_index = successor->GetPredecessorIndexOf(predecessor); 936 size_t successor_index = predecessor->GetSuccessorIndexOf(successor); [all...] |