/art/compiler/optimizing/ |
H A D | linear_order.cc | 109 // successor block are visited, the successor block is added in the worklist 119 for (HBasicBlock* successor : current->GetSuccessors()) { 120 int block_id = successor->GetBlockId(); 123 AddToListForLinearization(&worklist, successor);
|
H A D | dead_code_elimination.cc | 80 for (HBasicBlock* successor : live_successors) { 82 if (!visited->IsBitSet(successor->GetBlockId())) { 83 visited->SetBit(successor->GetBlockId()); 84 worklist.push_back(successor); 433 HBasicBlock* successor = block->GetSingleSuccessor(); local 434 if (successor->IsExitBlock() || successor->GetPredecessors().size() != 1u) { 437 DCHECK_LT(i, IndexOfElement(graph_->GetReversePostOrder(), successor)); 438 block->MergeWith(successor); 442 // Reiterate on this block in case it can be merged with its new successor [all...] |
H A D | nodes.cc | 83 HBasicBlock* successor = current->GetSuccessors()[successors_visited[current_id]++]; local 84 uint32_t successor_id = successor->GetBlockId(); 86 DCHECK(ContainsElement(worklist, successor)); 87 successor->AddBackEdge(current); 91 worklist.push_back(successor); 162 // We only need to update the successor, which might be live. 163 for (HBasicBlock* successor : block->GetSuccessors()) { 164 successor->RemovePredecessor(block); 248 static bool UpdateDominatorOfSuccessor(HBasicBlock* block, HBasicBlock* successor) { argument 249 DCHECK(ContainsElement(block->GetSuccessors(), successor)); 289 HBasicBlock* successor = current->GetSuccessors()[successors_visited[current_id]++]; local 347 SplitEdge(HBasicBlock* block, HBasicBlock* successor) argument 356 SplitCriticalEdge(HBasicBlock* block, HBasicBlock* successor) argument 573 HBasicBlock* successor = normal_successors[j]; local 2311 HBasicBlock* successor = GetSuccessors()[0]; local [all...] |
H A D | graph_checker.cc | 168 for (HBasicBlock* successor : block->GetNormalSuccessors()) { 169 if (successor->IsCatchBlock()) { 170 AddError(StringPrintf("Catch block %d is a normal successor of block %d.", 171 successor->GetBlockId(), 175 for (HBasicBlock* successor : block->GetExceptionalSuccessors()) { 176 if (!successor->IsCatchBlock()) { 177 AddError(StringPrintf("Normal block %d is an exceptional successor of block %d.", 178 successor->GetBlockId(), 200 for (HBasicBlock* successor : block->GetNormalSuccessors()) { 201 if (successor 533 HBasicBlock* successor = ret->GetBlock()->GetSingleSuccessor(); local 543 HBasicBlock* successor = ret->GetBlock()->GetSingleSuccessor(); local [all...] |
H A D | ssa_liveness_analysis_test.cc | 53 HBasicBlock* successor = new (GetAllocator()) HBasicBlock(graph); local 54 graph->AddBlock(successor); 55 block->AddSuccessor(successor); 56 return successor;
|
H A D | block_builder.cc | 63 // Create the first block for the dex instructions, single successor of the entry block. 367 // the successor is not in the same TryItem. 374 HBasicBlock* successor = try_block->GetSuccessors()[i]; local 376 // If the successor is a try block, all of its predecessors must be 379 if (GetTryItem(successor, try_block_info) != nullptr) { 380 DCHECK_EQ(try_item, GetTryItem(successor, try_block_info)); 386 new (allocator_) HTryBoundary(HTryBoundary::BoundaryKind::kExit, successor->GetDexPc()); 387 graph_->SplitEdge(try_block, successor)->AddInstruction(try_exit);
|
H A D | ssa_liveness_analysis.cc | 148 for (HBasicBlock* successor : block->GetSuccessors()) { 149 live_in->Union(GetLiveInSet(*successor)); 150 if (successor->IsCatchBlock()) { 160 size_t phi_input_index = successor->GetPredecessorIndexOf(block); 161 for (HInstructionIterator phi_it(successor->GetPhis()); !phi_it.Done(); phi_it.Advance()) { 277 for (HBasicBlock* successor : block.GetSuccessors()) { 278 if (live_out->Union(GetLiveInSet(*successor))) {
|
H A D | loop_optimization_test.cc | 60 /** Adds a loop nest at given position before successor. */ 61 HBasicBlock* AddLoop(HBasicBlock* position, HBasicBlock* successor) { argument 67 position->ReplaceSuccessor(successor, header); 69 header->AddSuccessor(successor);
|
H A D | superblock_cloner.cc | 158 // This flag reflects whether the original successor has at least one phi and this phi 160 // in the end all of the phis in the copy successor have the same number of inputs - the number 161 // of copy successor's predecessors. 252 HBasicBlock* successor = current->GetSuccessors()[successors_visited[current_id]++]; local 253 uint32_t successor_id = successor->GetBlockId(); 259 DCHECK(ContainsElement(worklist, successor)); 260 successor->AddBackEdgeWhileUpdating(current); 264 worklist.push_back(successor);
|
H A D | bounds_check_elimination.cc | 603 // and push the narrowed value range to `successor`. 605 HBasicBlock* successor, ValueRange* range) { 609 AssignRange(successor, instruction, range); 621 AssignRange(successor, instruction, existing_range->Narrow(range)); 646 HBasicBlock* successor = nullptr; local 652 successor = instruction->IfTrueSuccessor(); 654 successor = instruction->IfTrueSuccessor(); 656 successor = instruction->IfFalseSuccessor(); 660 successor = instruction->IfFalseSuccessor(); 667 if (successor ! 604 ApplyRangeFromComparison(HInstruction* instruction, HBasicBlock* basic_block, HBasicBlock* successor, ValueRange* range) argument [all...] |
H A D | code_sinking.cc | 286 for (HBasicBlock* successor : block->GetSuccessors()) { 287 if (!post_dominated.IsBitSet(successor->GetBlockId())) {
|
H A D | gvn.cc | 359 // successor blocks. 425 // `block` is a direct successor of its dominator. No need to clone the 517 for (const HBasicBlock* successor : block->GetSuccessors()) { 518 if (!visited_blocks_.IsBitSet(successor->GetBlockId())) {
|
H A D | code_generator_mips.h | 239 void GenerateSuspendCheck(HSuspendCheck* check, HBasicBlock* successor); 339 void HandleGoto(HInstruction* got, HBasicBlock* successor);
|
H A D | code_generator_mips64.h | 236 void GenerateSuspendCheck(HSuspendCheck* check, HBasicBlock* successor); 325 void HandleGoto(HInstruction* got, HBasicBlock* successor);
|
H A D | code_generator_x86.h | 209 // Generate code for the given suspend check. If not null, `successor` 212 void GenerateSuspendCheck(HSuspendCheck* check, HBasicBlock* successor); 295 void HandleGoto(HInstruction* got, HBasicBlock* successor);
|
H A D | code_generator_x86_64.h | 206 // Generate code for the given suspend check. If not null, `successor` 209 void GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor); 280 void HandleGoto(HInstruction* got, HBasicBlock* successor);
|
H A D | code_generator_arm64.cc | 427 SuspendCheckSlowPathARM64(HSuspendCheck* instruction, HBasicBlock* successor) argument 428 : SlowPathCodeARM64(instruction), successor_(successor) {} 2155 HBasicBlock* successor) { 2160 new (codegen_->GetScopedAllocator()) SuspendCheckSlowPathARM64(instruction, successor); 2163 if (successor != nullptr) { 2164 DCHECK(successor->IsLoopHeader()); 2167 DCHECK_EQ(slow_path->GetSuccessor(), successor); 2174 if (successor == nullptr) { 2178 __ Cbz(temp, codegen_->GetLabelOf(successor)); 2180 // slow_path will return to GetLabelOf(successor) 2154 GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor) argument 3509 HandleGoto(HInstruction* got, HBasicBlock* successor) argument 3554 HBasicBlock* successor = try_boundary->GetNormalFlowSuccessor(); local [all...] |
H A D | code_generator_arm64.h | 267 void GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor); 330 void HandleGoto(HInstruction* got, HBasicBlock* successor);
|
H A D | code_generator_arm_vixl.h | 319 // Generate code for the given suspend check. If not null, `successor` 322 void GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor); 405 void HandleGoto(HInstruction* got, HBasicBlock* successor);
|
H A D | graph_visualizer.cc | 265 for (HBasicBlock* successor : block->GetNormalSuccessors()) { 266 output_ << " \"B" << successor->GetBlockId() << "\" ";
|
H A D | code_generator_arm_vixl.cc | 449 SuspendCheckSlowPathARMVIXL(HSuspendCheck* instruction, HBasicBlock* successor) argument 450 : SlowPathCodeARMVIXL(instruction), successor_(successor) {} 2805 void InstructionCodeGeneratorARMVIXL::HandleGoto(HInstruction* got, HBasicBlock* successor) { argument 2806 if (successor->IsExitBlock()) { 2826 GenerateSuspendCheck(info->GetSuspendCheck(), successor); 2833 if (!codegen_->GoesToNextBlock(block, successor)) { 2834 __ B(codegen_->GetLabelOf(successor)); 2851 HBasicBlock* successor = try_boundary->GetNormalFlowSuccessor(); local 2852 if (!successor->IsExitBlock()) { 2853 HandleGoto(try_boundary, successor); 6747 GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor) argument [all...] |
H A D | code_generator_mips64.cc | 302 SuspendCheckSlowPathMIPS64(HSuspendCheck* instruction, HBasicBlock* successor) argument 303 : SlowPathCodeMIPS64(instruction), successor_(successor) {} 1788 HBasicBlock* successor) { 1794 new (codegen_->GetScopedAllocator()) SuspendCheckSlowPathMIPS64(instruction, successor); 1797 if (successor != nullptr) { 1798 DCHECK(successor->IsLoopHeader()); 1801 DCHECK_EQ(slow_path->GetSuccessor(), successor); 1808 if (successor == nullptr) { 1812 __ Beqzc(TMP, codegen_->GetLabelOf(successor)); 1814 // slow_path will return to GetLabelOf(successor) [all...] |
H A D | code_generator_x86.cc | 187 SuspendCheckSlowPathX86(HSuspendCheck* instruction, HBasicBlock* successor) argument 188 : SlowPathCode(instruction), successor_(successor) {} 1358 void InstructionCodeGeneratorX86::HandleGoto(HInstruction* got, HBasicBlock* successor) { argument 1359 if (successor->IsExitBlock()) { 1375 GenerateSuspendCheck(info->GetSuspendCheck(), successor); 1382 if (!codegen_->GoesToNextBlock(got->GetBlock(), successor)) { 1383 __ jmp(codegen_->GetLabelOf(successor)); 1400 HBasicBlock* successor = try_boundary->GetNormalFlowSuccessor(); local 1401 if (!successor->IsExitBlock()) { 1402 HandleGoto(try_boundary, successor); 5735 GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor) argument [all...] |
H A D | code_generator_x86_64.cc | 143 SuspendCheckSlowPathX86_64(HSuspendCheck* instruction, HBasicBlock* successor) argument 144 : SlowPathCode(instruction), successor_(successor) {} 1456 void InstructionCodeGeneratorX86_64::HandleGoto(HInstruction* got, HBasicBlock* successor) { argument 1457 if (successor->IsExitBlock()) { 1472 GenerateSuspendCheck(info->GetSuspendCheck(), successor); 1479 if (!codegen_->GoesToNextBlock(got->GetBlock(), successor)) { 1480 __ jmp(codegen_->GetLabelOf(successor)); 1497 HBasicBlock* successor = try_boundary->GetNormalFlowSuccessor(); local 1498 if (!successor->IsExitBlock()) { 1499 HandleGoto(try_boundary, successor); 5182 GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor) argument [all...] |
H A D | nodes.h | 419 // Splits the edge between `block` and `successor` while preserving the 420 // indices in the predecessor/successor lists. If there are multiple edges 422 // Returns the new block which is empty and has the same dex pc as `successor`. 423 HBasicBlock* SplitEdge(HBasicBlock* block, HBasicBlock* successor); 425 void SplitCriticalEdge(HBasicBlock* block, HBasicBlock* successor); 1077 // Insert `this` between `predecessor` and `successor. This method 1079 // `predecessor` and `successor`. 1080 void InsertBetween(HBasicBlock* predecessor, HBasicBlock* successor) { argument 1081 size_t predecessor_index = successor->GetPredecessorIndexOf(predecessor); 1082 size_t successor_index = predecessor->GetSuccessorIndexOf(successor); [all...] |