Searched refs:block (Results 1 - 25 of 66) sorted by relevance

123

/art/compiler/optimizing/
H A Dside_effects_analysis.cc29 HBasicBlock* block = it.Current(); local
30 SideEffects effects = GetBlockEffects(block);
32 if (block->IsLoopHeader()) {
33 effects = GetLoopEffects(block);
41 HBasicBlock* block = it.Current(); local
44 // Update `effects` with the side effects of all instructions in this block.
45 for (HInstructionIterator inst_it(block->GetInstructions()); !inst_it.Done();
54 block_effects_.Put(block->GetBlockId(), effects);
56 if (block->IsLoopHeader()) {
58 UpdateLoopEffects(block
[all...]
H A Ddead_code_elimination.cc23 static void MarkReachableBlocks(HBasicBlock* block, ArenaBitVector* visited) { argument
24 int block_id = block->GetBlockId();
30 HInstruction* last_instruction = block->GetLastInstruction();
44 for (size_t i = 0, e = block->GetSuccessors().Size(); i < e; ++i) {
45 MarkReachableBlocks(block->GetSuccessors().Get(i), visited);
50 static void MarkLoopHeadersContaining(const HBasicBlock& block, ArenaBitVector* set) { argument
51 for (HLoopInformationOutwardIterator it(block); !it.Done(); it.Advance()) {
56 void HDeadCodeElimination::MaybeRecordDeadBlock(HBasicBlock* block) { argument
59 block->GetPhis().CountSize() + block
76 HBasicBlock* block = it.Current(); local
100 HBasicBlock* block = it.Current(); local
120 HBasicBlock* block = b.Current(); local
[all...]
H A Dboolean_simplifier.h73 void TryRemovingNegatedCondition(HBasicBlock* block);
74 void TryRemovingBooleanSelection(HBasicBlock* block);
H A Dboolean_simplifier.cc21 void HBooleanSimplifier::TryRemovingNegatedCondition(HBasicBlock* block) { argument
22 DCHECK(block->EndsWithIf());
25 HIf* if_instruction = block->GetLastInstruction()->AsIf();
33 block->SwapSuccessors();
101 void HBooleanSimplifier::TryRemovingBooleanSelection(HBasicBlock* block) { argument
102 DCHECK(block->EndsWithIf());
105 HIf* if_instruction = block->GetLastInstruction()->AsIf();
126 block->InsertInstructionBefore(replacement, if_instruction);
139 // 'block->false_block->merge_block' into one.
141 block
156 HBasicBlock* block = it.Current(); local
[all...]
H A Dgvn_test.cc39 HBasicBlock* block = new (&allocator) HBasicBlock(graph); local
40 graph->AddBlock(block);
41 entry->AddSuccessor(block);
43 block->AddInstruction(
46 block->AddInstruction(
49 HInstruction* to_remove = block->GetLastInstruction();
50 block->AddInstruction(
53 HInstruction* different_offset = block->GetLastInstruction();
55 block->AddInstruction(new (&allocator) HInstanceFieldSet(
57 block
88 HBasicBlock* block = new (&allocator) HBasicBlock(graph); local
144 HBasicBlock* block = new (&allocator) HBasicBlock(graph); local
[all...]
H A Dpretty_printer.h71 void VisitBasicBlock(HBasicBlock* block) OVERRIDE {
73 PrintInt(block->GetBlockId());
74 const GrowableArray<HBasicBlock*>& predecessors = block->GetPredecessors();
83 const GrowableArray<HBasicBlock*>& successors = block->GetSuccessors();
93 HGraphVisitor::VisitBasicBlock(block);
125 void VisitBasicBlock(HBasicBlock* block) OVERRIDE {
126 current_block_ = block;
127 HPrettyPrinter::VisitBasicBlock(block);
H A Dssa_liveness_analysis.cc46 static void AddToListForLinearization(GrowableArray<HBasicBlock*>* worklist, HBasicBlock* block) { argument
48 HLoopInformation* block_loop = block->GetLoopInformation();
55 // The block can be processed immediately.
59 worklist->InsertAt(insert_at, block);
65 // - Back-edge is the last block before loop exits.
67 // (1): Record the number of forward predecessors for each block. This is to
75 HBasicBlock* block = it.Current(); local
76 size_t number_of_forward_predecessors = block->GetPredecessors().Size();
77 if (block->IsLoopHeader()) {
78 number_of_forward_predecessors -= block
117 HBasicBlock* block = it.Current(); local
160 HBasicBlock* block = it.Current(); local
181 HBasicBlock* block = it.Current(); local
283 const HBasicBlock& block = *it.Current(); local
295 UpdateLiveOut(const HBasicBlock& block) argument
309 UpdateLiveIn(const HBasicBlock& block) argument
343 HBasicBlock* block = liveness.GetBlockFromPosition(GetStart() / 2); local
[all...]
H A Dssa_builder.h35 * have different values at a join block) are available to all their
61 GrowableArray<HInstruction*>* GetLocalsFor(HBasicBlock* block) { argument
62 GrowableArray<HInstruction*>* locals = locals_for_.Get(block->GetBlockId());
67 locals_for_.Put(block->GetBlockId(), locals);
72 HInstruction* ValueOfLocal(HBasicBlock* block, size_t local);
74 void VisitBasicBlock(HBasicBlock* block);
96 // Locals for the current block being visited.
103 // HEnvironment for each block.
H A Dgraph_test.cc40 HBasicBlock* block = new (allocator) HBasicBlock(graph); local
41 graph->AddBlock(block);
43 block->AddInstruction(got);
44 return block;
48 HBasicBlock* block = createGotoBlock(graph, allocator); local
49 graph->SetEntryBlock(block);
50 return block;
54 HBasicBlock* block = new (allocator) HBasicBlock(graph); local
55 graph->AddBlock(block);
57 block
62 HBasicBlock* block = new (allocator) HBasicBlock(graph); local
292 HBasicBlock* block = createGotoBlock(graph, &allocator); local
[all...]
H A Dlicm.cc22 static bool IsPhiOf(HInstruction* instruction, HBasicBlock* block) { argument
23 return instruction->IsPhi() && instruction->GetBlock() == block;
87 HBasicBlock* block = it.Current(); local
88 if (!block->IsLoopHeader()) {
93 HLoopInformation* loop_info = block->GetLoopInformation();
94 SideEffects loop_effects = side_effects_.GetLoopEffects(block);
H A Dnodes.cc27 void HGraph::AddBlock(HBasicBlock* block) { argument
28 block->SetBlockId(blocks_.Size());
29 blocks_.Add(block);
56 HBasicBlock* block = blocks_.Get(i); local
57 DCHECK(block->GetPhis().IsEmpty()) << "Phis are not inserted at this stage";
58 for (HInstructionIterator it(block->GetInstructions()); !it.Done(); it.Advance()) {
68 HBasicBlock* block = blocks_.Get(i); local
70 for (size_t j = 0; j < block->GetSuccessors().Size(); ++j) {
71 block->GetSuccessors().Get(j)->RemovePredecessor(block);
80 VisitBlockForBackEdges(HBasicBlock* block, ArenaBitVector* visited, ArenaBitVector* visiting) argument
163 VisitBlockForDominatorTree(HBasicBlock* block, HBasicBlock* predecessor, GrowableArray<size_t>* visits) argument
191 SplitCriticalEdge(HBasicBlock* block, HBasicBlock* successor) argument
263 HBasicBlock* block = blocks_.Get(i); local
283 HBasicBlock* block = it.Current(); local
349 Add(HBasicBlock* block) argument
353 Remove(HBasicBlock* block) argument
357 PopulateRecursive(HBasicBlock* block) argument
393 HBasicBlock* block = graph->GetBlocks().Get(id); local
472 Add(HInstructionList* instruction_list, HBasicBlock* block, HInstruction* instruction) argument
528 Remove(HInstructionList* instruction_list, HBasicBlock* block, HInstruction* instruction, bool ensure_safety) argument
705 HBasicBlock* block = GetBlock(); local
795 HBasicBlock* block = blocks.Get(i); local
808 VisitBasicBlock(HBasicBlock* block) argument
1206 DeleteDeadBlock(HBasicBlock* block) argument
[all...]
H A Dside_effects_analysis.h33 SideEffects GetLoopEffects(HBasicBlock* block) const;
34 SideEffects GetBlockEffects(HBasicBlock* block) const;
53 // of the instructions in the block.
H A Ddead_code_elimination.h43 void MaybeRecordDeadBlock(HBasicBlock* block);
H A Dreference_type_propagation.h51 void VisitBasicBlock(HBasicBlock* block);
56 void BoundTypeForIfNotNull(HBasicBlock* block);
57 void BoundTypeForIfInstanceOf(HBasicBlock* block);
H A Dgraph_checker.cc28 void GraphChecker::VisitBasicBlock(HBasicBlock* block) { argument
29 current_block_ = block;
31 // Check consistency with respect to predecessors of `block`.
32 const GrowableArray<HBasicBlock*>& predecessors = block->GetPredecessors();
44 if (p_successors.Get(j) == block) {
50 "Block %d lists %zu occurrences of block %d in its predecessors, whereas "
51 "block %d lists %zu occurrences of block %d in its successors.",
52 block->GetBlockId(), p_count_in_block_predecessors, p->GetBlockId(),
53 p->GetBlockId(), block_count_in_p_successors, block
280 VisitBasicBlock(HBasicBlock* block) argument
609 HBasicBlock* block = instruction->GetBlock(); local
[all...]
H A Dssa_phi_elimination.cc29 HBasicBlock* block = it.Current(); local
30 for (HInstructionIterator inst_it(block->GetPhis()); !inst_it.Done(); inst_it.Advance()) {
64 HBasicBlock* block = it.Current(); local
65 HInstruction* current = block->GetFirstPhi();
93 block->RemovePhi(phi, /*ensure_safety=*/ false);
103 HBasicBlock* block = it.Current(); local
104 for (HInstructionIterator inst_it(block->GetPhis()); !inst_it.Done(); inst_it.Advance()) {
121 // block is first in the list of predecessors of the loop header.
H A Dssa_builder.cc43 void VisitBasicBlock(HBasicBlock* block);
120 void DeadPhiHandling::VisitBasicBlock(HBasicBlock* block) { argument
121 for (HInstructionIterator it(block->GetPhis()); !it.Done(); it.Advance()) {
125 if (block->IsLoopHeader()) {
232 // 1) Visit in reverse post order. We need to have all predecessors of a block visited
234 // block. For loops, we create phis whose inputs will be set in 2).
241 HBasicBlock* block = loop_headers_.Get(i); local
242 for (HInstructionIterator it(block->GetPhis()); !it.Done(); it.Advance()) {
244 for (size_t pred = 0; pred < block->GetPredecessors().Size(); pred++) {
245 HInstruction* input = ValueOfLocal(block
299 HBasicBlock* block = it.Current(); local
346 ValueOfLocal(HBasicBlock* block, size_t local) argument
350 VisitBasicBlock(HBasicBlock* block) argument
[all...]
H A Dgraph_visualizer.cc108 void PrintPredecessors(HBasicBlock* block) { argument
111 for (size_t i = 0, e = block->GetPredecessors().Size(); i < e; ++i) {
112 HBasicBlock* predecessor = block->GetPredecessors().Get(i);
118 void PrintSuccessors(HBasicBlock* block) { argument
121 for (size_t i = 0, e = block->GetSuccessors().Size(); i < e; ++i) {
122 HBasicBlock* successor = block->GetSuccessors().Get(i);
296 void VisitBasicBlock(HBasicBlock* block) OVERRIDE {
297 StartTag("block");
298 PrintProperty("name", "B", block->GetBlockId());
299 if (block
307 PrintPredecessors(block); variable
308 PrintSuccessors(block); variable
[all...]
H A Dprimitive_type_propagation.cc87 void PrimitiveTypePropagation::VisitBasicBlock(HBasicBlock* block) { argument
88 if (block->IsLoopHeader()) {
89 for (HInstructionIterator it(block->GetPhis()); !it.Done(); it.Advance()) {
96 for (HInstructionIterator it(block->GetPhis()); !it.Done(); it.Advance()) {
H A Dprimitive_type_propagation.h33 void VisitBasicBlock(HBasicBlock* block);
H A Dconstant_folding.cc48 HBasicBlock* block = it.Current(); local
49 // Traverse this block's instructions in (forward) order and
52 for (HInstructionIterator inst_it(block->GetInstructions());
152 HBasicBlock* block = instruction->GetBlock(); local
161 block->RemoveInstruction(instruction);
177 block->RemoveInstruction(instruction);
196 HBasicBlock* block = instruction->GetBlock(); local
210 block->RemoveInstruction(instruction);
225 HBasicBlock* block = instruction->GetBlock(); local
227 block
[all...]
H A Dgvn.cc314 // Per-block GVN. Will also update the ValueSet of the dominated and
316 void VisitBasicBlock(HBasicBlock* block);
322 // ValueSet for blocks. Initially null, but for an individual block they
324 // in the path from the dominator to the block.
334 // Use the reverse post order to ensure the non back-edge predecessors of a block are
335 // visited before the block itself.
341 void GlobalValueNumberer::VisitBasicBlock(HBasicBlock* block) { argument
343 const GrowableArray<HBasicBlock*>& predecessors = block->GetPredecessors();
345 // The entry block should only accumulate constant instructions, and
346 // the builder puts constants only in the entry block
[all...]
H A Dinstruction_simplifier.cc203 HBasicBlock* block = check->GetBlock(); local
205 if (block->IsEntryBlock()) return;
208 if (block->IsLoopHeader() && block->GetFirstInstruction() == check) {
209 DCHECK(block->GetLoopInformation()->GetSuspendCheck() == check);
215 block->RemoveInstruction(check);
223 HBasicBlock* block = equal->GetBlock(); local
229 block->RemoveInstruction(equal);
233 block->ReplaceAndRemoveInstructionWith(
234 equal, new (block
246 HBasicBlock* block = not_equal->GetBlock(); local
442 HBasicBlock* block = instruction->GetBlock(); local
632 HBasicBlock* block = instruction->GetBlock(); local
[all...]
H A Dregister_allocator_test.cc473 HBasicBlock* block = new (allocator) HBasicBlock(graph); local
474 graph->AddBlock(block);
475 entry->AddSuccessor(block);
479 block->AddInstruction(test);
480 block->AddInstruction(new (allocator) HIf(test));
488 block->AddSuccessor(then);
489 block->AddSuccessor(else_);
603 HBasicBlock* block = new (allocator) HBasicBlock(graph); local
604 graph->AddBlock(block);
605 entry->AddSuccessor(block);
674 HBasicBlock* block = new (allocator) HBasicBlock(graph); local
743 HBasicBlock* block = new (allocator) HBasicBlock(graph); local
799 HBasicBlock* block = new (&allocator) HBasicBlock(graph); local
[all...]
/art/compiler/dex/
H A Dssa_transformation.cc50 res = NeedsVisit(GetBasicBlock(sbi->block));
61 void MIRGraph::MarkPreOrder(BasicBlock* block) { argument
62 block->visited = true;
63 /* Enqueue the pre_order block id */
64 if (block->id != NullBasicBlockId) {
65 dfs_order_.push_back(block->id);
69 void MIRGraph::RecordDFSOrders(BasicBlock* block) { argument
73 MarkPreOrder(block);
74 succ.push_back(block);
120 * Mark block bi
534 DoDFSPreOrderSSARename(BasicBlock* block) argument
[all...]

Completed in 196 milliseconds

123