Home
last modified time | relevance | path

Searched refs:block (Results 1 – 25 of 105) sorted by relevance

12345

/art/compiler/optimizing/
Dcommon_dominator.h37 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 …]
Dside_effects_analysis.cc29 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 …]
Ddead_code_elimination.cc34 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 …]
Dselect_generator.cc26 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 …]
Dblock_builder.cc29 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 …]
Dlinear_order.cc37 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 …]
Dgvn.cc368 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 …]
Dssa_liveness_analysis.cc48 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 …]
Dgvn_test.cc42 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 …]
Dgraph_test.cc39 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 …]
Dssa_liveness_analysis_test.cc52 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 …]
Dgraph_checker.cc36 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 …]
Dcha_guard_optimization.cc49 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 …]
Dnodes.cc49 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 …]
Dpretty_printer.h73 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()
Dfind_loops_test.cc41 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 …]
Dconstant_folding_test.cc749 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 …]
Dcode_sinking.cc121 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 …]
Dbounds_check_elimination_test.cc306 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 …]
Dinduction_var_range.h103 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,
Dinduction_var_range.cc177 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 …]
Dlicm.cc23 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()
Dloop_optimization.cc43 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/
Dinfo.txt2 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/
Dscoped_flock.cc35 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()

12345