/art/compiler/optimizing/ |
H A D | side_effects_analysis.cc | 29 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 D | dead_code_elimination.cc | 23 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 D | boolean_simplifier.h | 73 void TryRemovingNegatedCondition(HBasicBlock* block); 74 void TryRemovingBooleanSelection(HBasicBlock* block);
|
H A D | boolean_simplifier.cc | 21 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 D | gvn_test.cc | 39 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 D | pretty_printer.h | 71 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 D | ssa_liveness_analysis.cc | 46 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 D | ssa_builder.h | 35 * 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 D | graph_test.cc | 40 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 D | licm.cc | 22 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 D | nodes.cc | 27 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 D | side_effects_analysis.h | 33 SideEffects GetLoopEffects(HBasicBlock* block) const; 34 SideEffects GetBlockEffects(HBasicBlock* block) const; 53 // of the instructions in the block.
|
H A D | dead_code_elimination.h | 43 void MaybeRecordDeadBlock(HBasicBlock* block);
|
H A D | reference_type_propagation.h | 51 void VisitBasicBlock(HBasicBlock* block); 56 void BoundTypeForIfNotNull(HBasicBlock* block); 57 void BoundTypeForIfInstanceOf(HBasicBlock* block);
|
H A D | graph_checker.cc | 28 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 D | ssa_phi_elimination.cc | 29 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 D | ssa_builder.cc | 43 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 D | graph_visualizer.cc | 108 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 D | primitive_type_propagation.cc | 87 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 D | primitive_type_propagation.h | 33 void VisitBasicBlock(HBasicBlock* block);
|
H A D | constant_folding.cc | 48 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 D | gvn.cc | 314 // 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 D | instruction_simplifier.cc | 203 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 D | register_allocator_test.cc | 473 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 D | ssa_transformation.cc | 50 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...] |