/art/compiler/optimizing/ |
D | common_dominator.h | 37 explicit CommonDominator(HBasicBlock* block) in CommonDominator() argument 38 : dominator_(block), chain_length_(ChainLength(block)) { in CommonDominator() 42 void Update(HBasicBlock* block) { in Update() argument 43 DCHECK(block != nullptr); in Update() 45 dominator_ = block; in Update() 46 chain_length_ = ChainLength(block); in Update() 51 if (block == block2) { in Update() 54 size_t chain_length = ChainLength(block); in Update() 58 block = block->GetDominator(); in Update() 59 DCHECK(block != nullptr); in Update() [all …]
|
D | side_effects_analysis.cc | 29 for (HBasicBlock* block : graph_->GetReversePostOrder()) { in Run() 30 SideEffects effects = GetBlockEffects(block); in Run() 32 if (block->IsLoopHeader()) { in Run() 33 effects = GetLoopEffects(block); in Run() 40 for (HBasicBlock* block : graph_->GetPostOrder()) { in Run() 43 for (HInstructionIterator inst_it(block->GetInstructions()); !inst_it.Done(); in Run() 54 block_effects_[block->GetBlockId()] = effects; in Run() 56 if (block->IsLoopHeader()) { in Run() 58 UpdateLoopEffects(block->GetLoopInformation(), effects); in Run() 59 HBasicBlock* pre_header = block->GetLoopInformation()->GetPreHeader(); in Run() [all …]
|
D | dead_code_elimination.cc | 34 HBasicBlock* block = worklist.back(); in MarkReachableBlocks() local 36 int block_id = block->GetBlockId(); in MarkReachableBlocks() 39 ArrayRef<HBasicBlock* const> live_successors(block->GetSuccessors()); in MarkReachableBlocks() 40 HInstruction* last_instruction = block->GetLastInstruction(); in MarkReachableBlocks() 67 DCHECK_EQ(live_successors[0], block->GetSuccessors()[switch_index]); in MarkReachableBlocks() 85 void HDeadCodeElimination::MaybeRecordDeadBlock(HBasicBlock* block) { in MaybeRecordDeadBlock() argument 88 block->GetPhis().CountSize() + block->GetInstructions().CountSize()); in MaybeRecordDeadBlock() 185 for (HBasicBlock* block : graph_->GetReversePostOrder()) { in SimplifyIfs() 186 HInstruction* last = block->GetLastInstruction(); in SimplifyIfs() 187 HInstruction* first = block->GetFirstInstruction(); in SimplifyIfs() [all …]
|
D | select_generator.cc | 26 static bool IsSimpleBlock(HBasicBlock* block) { in IsSimpleBlock() argument 27 if (block->GetPredecessors().size() != 1u) { in IsSimpleBlock() 30 DCHECK(block->GetPhis().IsEmpty()); in IsSimpleBlock() 33 for (HInstructionIterator it(block->GetInstructions()); !it.Done(); it.Advance()) { in IsSimpleBlock() 56 static HPhi* GetSingleChangedPhi(HBasicBlock* block, size_t index1, size_t index2) { in GetSingleChangedPhi() argument 60 for (HInstructionIterator it(block->GetPhis()); !it.Done(); it.Advance()) { in GetSingleChangedPhi() 79 for (HBasicBlock* block : graph_->GetPostOrder()) { in Run() 80 if (!block->EndsWithIf()) continue; in Run() 83 HIf* if_instruction = block->GetLastInstruction()->AsIf(); in Run() 126 block->InsertInstructionBefore(select, if_instruction); in Run() [all …]
|
D | block_builder.cc | 29 HBasicBlock* block = branch_targets_[store_dex_pc]; in MaybeCreateBlockAt() local 30 if (block == nullptr) { in MaybeCreateBlockAt() 31 block = new (arena_) HBasicBlock(graph_, semantic_dex_pc); in MaybeCreateBlockAt() 32 branch_targets_[store_dex_pc] = block; in MaybeCreateBlockAt() 34 DCHECK_EQ(block->GetDexPc(), semantic_dex_pc); in MaybeCreateBlockAt() 35 return block; in MaybeCreateBlockAt() 121 HBasicBlock* block = graph_->GetEntryBlock(); in ConnectBasicBlocks() local 122 graph_->AddBlock(block); in ConnectBasicBlocks() 131 if (block != nullptr) { in ConnectBasicBlocks() 134 block->AddSuccessor(next_block); in ConnectBasicBlocks() [all …]
|
D | linear_order.cc | 37 static void AddToListForLinearization(ArenaVector<HBasicBlock*>* worklist, HBasicBlock* block) { in AddToListForLinearization() argument 38 HLoopInformation* block_loop = block->GetLoopInformation(); in AddToListForLinearization() 50 worklist->insert(insert_pos.base(), block); in AddToListForLinearization() 62 for (HBasicBlock* block : *linear_order) { in IsLinearOrderWellFormed() 63 if (loop->Contains(*block)) { in IsLinearOrderWellFormed() 65 if (found_blocks == 1u && block != header) { in IsLinearOrderWellFormed() 68 } else if (found_blocks == num_blocks && !loop->IsBackEdge(*block)) { in IsLinearOrderWellFormed() 97 for (HBasicBlock* block : graph->GetReversePostOrder()) { in LinearizeGraph() 98 size_t number_of_forward_predecessors = block->GetPredecessors().size(); in LinearizeGraph() 99 if (block->IsLoopHeader()) { in LinearizeGraph() [all …]
|
D | gvn.cc | 368 void VisitBasicBlock(HBasicBlock* block); 374 ValueSet* FindSetFor(HBasicBlock* block) const { in FindSetFor() 375 ValueSet* result = sets_[block->GetBlockId()]; in FindSetFor() 376 DCHECK(result != nullptr) << "Could not find set for block B" << block->GetBlockId(); in FindSetFor() 380 void AbandonSetFor(HBasicBlock* block) { in AbandonSetFor() argument 381 DCHECK(sets_[block->GetBlockId()] != nullptr) in AbandonSetFor() 382 << "Block B" << block->GetBlockId() << " expected to have a set"; in AbandonSetFor() 383 sets_[block->GetBlockId()] = nullptr; in AbandonSetFor() 388 bool WillBeReferencedAgain(HBasicBlock* block) const; 393 HBasicBlock* FindVisitedBlockWithRecyclableSet(HBasicBlock* block, [all …]
|
D | ssa_liveness_analysis.cc | 48 for (HBasicBlock* block : graph_->GetLinearOrder()) { in NumberInstructions() 49 block->SetLifetimeStart(lifetime_position); in NumberInstructions() 51 for (HInstructionIterator inst_it(block->GetPhis()); !inst_it.Done(); inst_it.Advance()) { in NumberInstructions() 68 for (HInstructionIterator inst_it(block->GetInstructions()); !inst_it.Done(); in NumberInstructions() 84 block->SetLifetimeEnd(lifetime_position); in NumberInstructions() 90 for (HBasicBlock* block : graph_->GetLinearOrder()) { in ComputeLiveness() 91 block_infos_[block->GetBlockId()] = in ComputeLiveness() 92 new (graph_->GetArena()) BlockInfo(graph_->GetArena(), *block, number_of_ssa_values_); in ComputeLiveness() 142 for (HBasicBlock* block : ReverseRange(graph_->GetLinearOrder())) { in ComputeLiveRanges() 143 BitVector* kill = GetKillSet(*block); in ComputeLiveRanges() [all …]
|
D | gvn_test.cc | 42 HBasicBlock* block = new (&allocator) HBasicBlock(graph); in TEST_F() local 43 graph->AddBlock(block); in TEST_F() 44 entry->AddSuccessor(block); in TEST_F() 46 block->AddInstruction(new (&allocator) HInstanceFieldGet(parameter, in TEST_F() 55 block->AddInstruction(new (&allocator) HInstanceFieldGet(parameter, in TEST_F() 64 HInstruction* to_remove = block->GetLastInstruction(); in TEST_F() 65 block->AddInstruction(new (&allocator) HInstanceFieldGet(parameter, in TEST_F() 74 HInstruction* different_offset = block->GetLastInstruction(); in TEST_F() 76 block->AddInstruction(new (&allocator) HInstanceFieldSet(parameter, in TEST_F() 86 block->AddInstruction(new (&allocator) HInstanceFieldGet(parameter, in TEST_F() [all …]
|
D | graph_test.cc | 39 HBasicBlock* block = new (allocator) HBasicBlock(graph); in createGotoBlock() local 40 graph->AddBlock(block); in createGotoBlock() 42 block->AddInstruction(got); in createGotoBlock() 43 return block; in createGotoBlock() 47 HBasicBlock* block = createGotoBlock(graph, allocator); in createEntryBlock() local 48 graph->SetEntryBlock(block); in createEntryBlock() 49 return block; in createEntryBlock() 53 HBasicBlock* block = new (allocator) HBasicBlock(graph); in createReturnBlock() local 54 graph->AddBlock(block); in createReturnBlock() 56 block->AddInstruction(return_instr); in createReturnBlock() [all …]
|
D | ssa_liveness_analysis_test.cc | 52 HBasicBlock* CreateSuccessor(HBasicBlock* block) { in CreateSuccessor() argument 53 HGraph* graph = block->GetGraph(); in CreateSuccessor() 56 block->AddSuccessor(successor); in CreateSuccessor() 75 HBasicBlock* block = CreateSuccessor(entry_); in TEST_F() local 77 block->AddInstruction(ret); in TEST_F() 78 block->AddInstruction(new (&allocator_) HExit()); in TEST_F() 107 HBasicBlock* block = CreateSuccessor(entry_); in TEST_F() local 109 block->AddInstruction(null_check); in TEST_F() 118 block->AddInstruction(length); in TEST_F() 120 block->AddInstruction(bounds_check); in TEST_F() [all …]
|
D | graph_checker.cc | 36 static bool IsExitTryBoundaryIntoExitBlock(HBasicBlock* block) { in IsExitTryBoundaryIntoExitBlock() argument 37 if (!block->IsSingleTryBoundary()) { in IsExitTryBoundaryIntoExitBlock() 41 HTryBoundary* boundary = block->GetLastInstruction()->AsTryBoundary(); in IsExitTryBoundaryIntoExitBlock() 42 return block->GetPredecessors().size() == 1u && in IsExitTryBoundaryIntoExitBlock() 47 void GraphChecker::VisitBasicBlock(HBasicBlock* block) { in VisitBasicBlock() argument 48 current_block_ = block; in VisitBasicBlock() 54 sorted_predecessors.assign(block->GetPredecessors().begin(), block->GetPredecessors().end()); in VisitBasicBlock() 63 std::count(p->GetSuccessors().begin(), p->GetSuccessors().end(), block); in VisitBasicBlock() 68 block->GetBlockId(), p_count_in_block_predecessors, p->GetBlockId(), in VisitBasicBlock() 69 p->GetBlockId(), block_count_in_p_successors, block->GetBlockId())); in VisitBasicBlock() [all …]
|
D | cha_guard_optimization.cc | 49 void VisitBasicBlock(HBasicBlock* block) OVERRIDE; 75 void CHAGuardVisitor::VisitBasicBlock(HBasicBlock* block) { in VisitBasicBlock() argument 80 HInstructionIterator it(block->GetInstructions()); in VisitBasicBlock() 89 HBasicBlock* block = flag->GetBlock(); in RemoveGuard() local 100 block->RemoveInstruction(deopt); in RemoveGuard() 101 block->RemoveInstruction(compare); in RemoveGuard() 102 block->RemoveInstruction(flag); in RemoveGuard() 181 HBasicBlock* block = flag->GetBlock(); in HoistGuard() local 182 HLoopInformation* loop_info = block->GetLoopInformation(); in HoistGuard() 201 block->RemoveInstruction(deopt); in HoistGuard() [all …]
|
D | nodes.cc | 49 void HGraph::AddBlock(HBasicBlock* block) { in AddBlock() argument 50 block->SetBlockId(blocks_.size()); in AddBlock() 51 blocks_.push_back(block); in AddBlock() 113 HBasicBlock* block = blocks_[i]; in RemoveInstructionsAsUsersFromDeadBlocks() local 114 if (block == nullptr) continue; in RemoveInstructionsAsUsersFromDeadBlocks() 115 DCHECK(block->GetPhis().IsEmpty()) << "Phis are not inserted at this stage"; in RemoveInstructionsAsUsersFromDeadBlocks() 116 for (HInstructionIterator it(block->GetInstructions()); !it.Done(); it.Advance()) { in RemoveInstructionsAsUsersFromDeadBlocks() 126 HBasicBlock* block = blocks_[i]; in RemoveDeadBlocks() local 127 if (block == nullptr) continue; in RemoveDeadBlocks() 129 for (HBasicBlock* successor : block->GetSuccessors()) { in RemoveDeadBlocks() [all …]
|
D | pretty_printer.h | 73 void VisitBasicBlock(HBasicBlock* block) OVERRIDE { in VisitBasicBlock() argument 75 PrintInt(block->GetBlockId()); in VisitBasicBlock() 76 const ArenaVector<HBasicBlock*>& predecessors = block->GetPredecessors(); in VisitBasicBlock() 85 const ArenaVector<HBasicBlock*>& successors = block->GetSuccessors(); in VisitBasicBlock() 95 HGraphVisitor::VisitBasicBlock(block); in VisitBasicBlock() 127 void VisitBasicBlock(HBasicBlock* block) OVERRIDE { in VisitBasicBlock() argument 128 current_block_ = block; in VisitBasicBlock() 129 HPrettyPrinter::VisitBasicBlock(block); in VisitBasicBlock()
|
D | find_loops_test.cc | 41 for (HBasicBlock* block : graph->GetBlocks()) { in TEST_F() 42 ASSERT_EQ(block->GetLoopInformation(), nullptr); in TEST_F() 54 for (HBasicBlock* block : graph->GetBlocks()) { in TEST_F() 55 ASSERT_EQ(block->GetLoopInformation(), nullptr); in TEST_F() 70 for (HBasicBlock* block : graph->GetBlocks()) { in TEST_F() 71 ASSERT_EQ(block->GetLoopInformation(), nullptr); in TEST_F() 87 for (HBasicBlock* block : graph->GetBlocks()) { in TEST_F() 88 ASSERT_EQ(block->GetLoopInformation(), nullptr); in TEST_F() 102 for (HBasicBlock* block : graph->GetBlocks()) { in TEST_F() 103 ASSERT_EQ(block->GetLoopInformation(), nullptr); in TEST_F() [all …]
|
D | constant_folding_test.cc | 749 HBasicBlock* block = new (&allocator_) HBasicBlock(graph_); in TEST_F() local 750 graph_->AddBlock(block); in TEST_F() 754 entry_block->AddSuccessor(block); in TEST_F() 755 block->AddSuccessor(exit_block); in TEST_F() 766 block->AddInstruction(last = new (&allocator_) HAbove(zero, parameter)); in TEST_F() 767 block->AddInstruction(new (&allocator_) HSelect(last, parameter, parameter, 0)); in TEST_F() 768 block->AddInstruction(last = new (&allocator_) HAbove(parameter, zero)); in TEST_F() 769 block->AddInstruction(new (&allocator_) HSelect(last, parameter, parameter, 0)); in TEST_F() 770 block->AddInstruction(last = new (&allocator_) HAboveOrEqual(zero, parameter)); in TEST_F() 771 block->AddInstruction(new (&allocator_) HSelect(last, parameter, parameter, 0)); in TEST_F() [all …]
|
D | code_sinking.cc | 121 static void AddInputs(HBasicBlock* block, in AddInputs() argument 125 for (HInstructionIterator it(block->GetPhis()); !it.Done(); it.Advance()) { in AddInputs() 128 for (HInstructionIterator it(block->GetInstructions()); !it.Done(); it.Advance()) { in AddInputs() 164 HBasicBlock* block = user->GetBlock(); in FindIdealPosition() local 168 block = user->AsPhi()->IsCatchPhi() in FindIdealPosition() 169 ? block->GetDominator() in FindIdealPosition() 170 : block->GetPredecessors()[use.GetIndex()]; in FindIdealPosition() 172 finder.Update(block); in FindIdealPosition() 247 for (HBasicBlock* block : graph_->GetPostOrder()) { in SinkCodeToUncommonBranch() 248 if (block == end_block) { in SinkCodeToUncommonBranch() [all …]
|
D | bounds_check_elimination_test.cc | 306 HBasicBlock* block = new (&allocator_) HBasicBlock(graph_); in TEST_F() local 307 graph_->AddBlock(block); in TEST_F() 308 entry->AddSuccessor(block); in TEST_F() 316 block->AddInstruction(null_check); in TEST_F() 317 block->AddInstruction(array_length); in TEST_F() 318 block->AddInstruction(bounds_check6); in TEST_F() 319 block->AddInstruction(array_set); in TEST_F() 327 block->AddInstruction(null_check); in TEST_F() 328 block->AddInstruction(array_length); in TEST_F() 329 block->AddInstruction(bounds_check5); in TEST_F() [all …]
|
D | induction_var_range.h | 103 HBasicBlock* block, 113 HInstruction* GenerateTakenTest(HInstruction* context, HGraph* graph, HBasicBlock* block); 127 HInstruction* GenerateLastValue(HInstruction* instruction, HGraph* graph, HBasicBlock* block); 173 HInstruction* GenerateTripCount(HLoopInformation* loop, HGraph* graph, HBasicBlock* block); 268 HBasicBlock* block, 279 HBasicBlock* block, 285 HBasicBlock* block, 291 HBasicBlock* block, 297 HBasicBlock* block, 304 HBasicBlock* block,
|
D | induction_var_range.cc | 177 static HInstruction* Insert(HBasicBlock* block, HInstruction* instruction) { in Insert() argument 178 DCHECK(block != nullptr); in Insert() 179 DCHECK(block->GetLastInstruction() != nullptr) << block->GetBlockId(); in Insert() 181 block->InsertInstructionBefore(instruction, block->GetLastInstruction()); in Insert() 265 HBasicBlock* block, in GenerateRange() argument 275 block, in GenerateRange() 288 HBasicBlock* block) { in GenerateTakenTest() argument 297 block, in GenerateTakenTest() 330 HBasicBlock* block) { in GenerateLastValue() argument 339 block, in GenerateLastValue() [all …]
|
D | licm.cc | 23 static bool IsPhiOf(HInstruction* instruction, HBasicBlock* block) { in IsPhiOf() argument 24 return instruction->IsPhi() && instruction->GetBlock() == block; in IsPhiOf() 94 for (HBasicBlock* block : graph_->GetPostOrder()) { in Run() 95 if (!block->IsLoopHeader()) { in Run() 100 HLoopInformation* loop_info = block->GetLoopInformation(); in Run() 101 SideEffects loop_effects = side_effects_.GetLoopEffects(block); in Run()
|
D | loop_optimization.cc | 43 static bool IsGotoBlock(HBasicBlock* block, /*out*/ HBasicBlock** succ) { in IsGotoBlock() argument 44 if (block->GetPredecessors().size() == 1 && in IsGotoBlock() 45 block->GetSuccessors().size() == 1 && in IsGotoBlock() 46 block->IsSingleGoto()) { in IsGotoBlock() 47 *succ = block->GetSingleSuccessor(); in IsGotoBlock() 182 static HInstruction* Insert(HBasicBlock* block, HInstruction* instruction) { in Insert() argument 183 DCHECK(block != nullptr); in Insert() 185 block->InsertInstructionBefore(instruction, block->GetLastInstruction()); in Insert() 242 for (HBasicBlock* block : linear_order) { in LocalRun() 243 if (block->IsLoopHeader()) { in LocalRun() [all …]
|
/art/test/435-try-finally-without-catch/ |
D | info.txt | 2 instructions with a `finally' clause but without any `catch' block, 6 block and whose result is assigned to a local value, it is smart 11 still emit a block with the exception catching and rethrowing 14 This used to be a problem for a `try' block followed by a `finally' 15 clause but with no `catch' block: in that case, the generated Dex code 16 item would list zero catch block for this method (see 20 special block(s) related to `catch'-less `try' statement(s), the 21 optimizing compiler considered this (these) as dead block(s) and
|
/art/runtime/base/ |
D | scoped_flock.cc | 35 bool ScopedFlock::Init(const char* filename, int flags, bool block, std::string* error_msg) { in Init() argument 36 return Init(filename, flags, block, true, error_msg); in Init() 41 bool block, in Init() argument 56 int operation = block ? LOCK_EX : (LOCK_EX | LOCK_NB); in Init() 77 if (block) { in Init() 88 if (block) { in Init()
|