Searched refs:successor (Results 1 - 21 of 21) sorted by path

/art/compiler/optimizing/
H A Dblock_builder.cc39 // 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 Dbounds_check_elimination.cc615 // 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 Dcode_generator_arm.cc115 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 Dcode_generator_arm.h213 // 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 Dcode_generator_arm64.cc392 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 Dcode_generator_arm64.h214 void GenerateSuspendCheck(HSuspendCheck* instruction, HBasicBlock* successor);
274 void HandleGoto(HInstruction* got, HBasicBlock* successor);
H A Dcode_generator_mips.cc339 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 Dcode_generator_mips.h223 void GenerateSuspendCheck(HSuspendCheck* check, HBasicBlock* successor);
249 void HandleGoto(HInstruction* got, HBasicBlock* successor);
H A Dcode_generator_mips64.cc292 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 Dcode_generator_mips64.h223 void GenerateSuspendCheck(HSuspendCheck* check, HBasicBlock* successor);
249 void HandleGoto(HInstruction* got, HBasicBlock* successor);
H A Dcode_generator_x86.cc167 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 Dcode_generator_x86.h206 // 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 Dcode_generator_x86_64.cc145 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 Dcode_generator_x86_64.h207 // 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 Ddead_code_elimination.cc74 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 Dgraph_checker.cc154 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 Dgraph_visualizer.cc269 for (HBasicBlock* successor : block->GetNormalSuccessors()) {
270 output_ << " \"B" << successor->GetBlockId() << "\" ";
H A Dgvn.cc367 // 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 Dnodes.cc77 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 Dnodes.h375 // 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...]
H A Dssa_liveness_analysis.cc85 // 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...]

Completed in 94 milliseconds