/art/compiler/optimizing/ |
H A D | common_dominator.h | 36 // Create a finder starting with a given block. 37 explicit CommonDominator(HBasicBlock* block) argument 38 : dominator_(block), chain_length_(ChainLength(block)) { 39 DCHECK(block != nullptr); 42 // Update the common dominator with another block. 43 void Update(HBasicBlock* block) { argument 44 DCHECK(block != nullptr); 47 if (block == block2) { 50 size_t chain_length = ChainLength(block); 78 ChainLength(HBasicBlock* block) argument [all...] |
H A D | live_ranges_test.cc | 76 HBasicBlock* block = graph->GetBlocks()[1]; local 77 ASSERT_TRUE(block->GetLastInstruction()->IsReturn()); 78 ASSERT_EQ(8u, block->GetLastInstruction()->GetLifetimePosition()); 124 HBasicBlock* block = graph->GetBlocks()[3]; local 125 ASSERT_TRUE(block->GetLastInstruction()->IsReturn()); 126 ASSERT_EQ(22u, block->GetLastInstruction()->GetLifetimePosition()); 174 // Last use is the phi at the return block so instruction is live until 175 // the end of the then block. 182 // First range starts from the definition and ends at the if block. 185 // 14 is the end of the if block [all...] |
H A D | side_effects_analysis.cc | 30 HBasicBlock* block = it.Current(); local 31 SideEffects effects = GetBlockEffects(block); 33 if (block->IsLoopHeader()) { 34 effects = GetLoopEffects(block); 42 HBasicBlock* block = it.Current(); local 45 // Update `effects` with the side effects of all instructions in this block. 46 for (HInstructionIterator inst_it(block->GetInstructions()); !inst_it.Done(); 51 // more information to side-effects of this block. 57 block_effects_[block->GetBlockId()] = effects; 59 if (block [all...] |
H A D | ssa_phi_elimination.cc | 38 HBasicBlock* block = it.Current(); local 39 for (HInstructionIterator inst_it(block->GetPhis()); !inst_it.Done(); inst_it.Advance()) { 88 HBasicBlock* block = it.Current(); local 89 HInstruction* current = block->GetFirstPhi(); 114 block->RemovePhi(phi, /*ensure_safety=*/ false); 125 HBasicBlock* block = it.Current(); local 126 for (HInstructionIterator inst_it(block->GetPhis()); !inst_it.Done(); inst_it.Advance()) { 223 // The candidate may not dominate a phi in a catch block: there may be non-throwing
|
H A D | find_loops_test.cc | 41 for (HBasicBlock* block : graph->GetBlocks()) { 42 ASSERT_EQ(block->GetLoopInformation(), nullptr); 54 for (HBasicBlock* block : graph->GetBlocks()) { 55 ASSERT_EQ(block->GetLoopInformation(), nullptr); 70 for (HBasicBlock* block : graph->GetBlocks()) { 71 ASSERT_EQ(block->GetLoopInformation(), nullptr); 87 for (HBasicBlock* block : graph->GetBlocks()) { 88 ASSERT_EQ(block->GetLoopInformation(), nullptr); 102 for (HBasicBlock* block : graph->GetBlocks()) { 103 ASSERT_EQ(block 113 HBasicBlock* block = graph->GetBlocks()[block_id]; local [all...] |
H A D | licm.cc | 22 static bool IsPhiOf(HInstruction* instruction, HBasicBlock* block) { argument 23 return instruction->IsPhi() && instruction->GetBlock() == block; 94 HBasicBlock* block = it.Current(); local 95 if (!block->IsLoopHeader()) { 100 HLoopInformation* loop_info = block->GetLoopInformation(); 101 SideEffects loop_effects = side_effects_.GetLoopEffects(block);
|
H A D | liveness_test.cc | 60 HBasicBlock* block = it.Current(); local 61 buffer << "Block " << block->GetBlockId() << std::endl; 63 BitVector* live_in = liveness.GetLiveInSet(*block); 65 BitVector* live_out = liveness.GetLiveOutSet(*block); 67 BitVector* kill = liveness.GetKillSet(*block); 120 "Block 0\n" // entry block 124 "Block 1\n" // block with add 128 "Block 2\n" // block with return 132 "Block 3\n" // exit block 159 "Block 0\n" // entry block [all...] |
H A D | dead_code_elimination.cc | 33 HBasicBlock* block = worklist.back(); local 35 int block_id = block->GetBlockId(); 38 ArrayRef<HBasicBlock* const> live_successors(block->GetSuccessors()); 39 HInstruction* last_instruction = block->GetLastInstruction(); 66 DCHECK_EQ(live_successors[0], block->GetSuccessors()[switch_index]); 84 void HDeadCodeElimination::MaybeRecordDeadBlock(HBasicBlock* block) { argument 87 block->GetPhis().CountSize() + block->GetInstructions().CountSize()); 107 // block's chain of dominators and nested loops need to be updated from the 110 HBasicBlock* block local 138 HBasicBlock* block = it.Current(); local 158 HBasicBlock* block = b.Current(); local [all...] |
H A D | select_generator.cc | 23 // Returns true if `block` has only one predecessor, ends with a Goto and 26 static bool IsSimpleBlock(HBasicBlock* block) { argument 27 if (block->GetPredecessors().size() != 1u) { 30 DCHECK(block->GetPhis().IsEmpty()); 33 for (HInstructionIterator it(block->GetInstructions()); !it.Done(); it.Advance()) { 54 // Returns nullptr if `block` has either no phis or there is more than one phi 56 static HPhi* GetSingleChangedPhi(HBasicBlock* block, size_t index1, size_t index2) { argument 60 for (HInstructionIterator it(block->GetPhis()); !it.Done(); it.Advance()) { 77 // the selection pattern empties a branch block of another occurrence. 80 HBasicBlock* block local [all...] |
H A D | constant_folding.cc | 29 void VisitBasicBlock(HBasicBlock* block) OVERRIDE; 78 void HConstantFoldingVisitor::VisitBasicBlock(HBasicBlock* block) { argument 79 // Traverse this block's instructions (phis don't need to be 82 for (HInstructionIterator it(block->GetInstructions()); !it.Done(); it.Advance()) { 264 HBasicBlock* block = instruction->GetBlock(); local 273 block->RemoveInstruction(instruction); 289 block->RemoveInstruction(instruction); 308 HBasicBlock* block = instruction->GetBlock(); local 322 block->RemoveInstruction(instruction); 337 HBasicBlock* block local [all...] |
H A D | constant_folding_test.cc | 749 HBasicBlock* block = new (&allocator_) HBasicBlock(graph_); local 750 graph_->AddBlock(block); 754 entry_block->AddSuccessor(block); 755 block->AddSuccessor(exit_block); 766 block->AddInstruction(last = new (&allocator_) HAbove(zero, parameter)); 767 block->AddInstruction(new (&allocator_) HSelect(last, parameter, parameter, 0)); 768 block->AddInstruction(last = new (&allocator_) HAbove(parameter, zero)); 769 block->AddInstruction(new (&allocator_) HSelect(last, parameter, parameter, 0)); 770 block->AddInstruction(last = new (&allocator_) HAboveOrEqual(zero, parameter)); 771 block [all...] |
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 | gvn_test.cc | 43 HBasicBlock* block = new (&allocator) HBasicBlock(graph); local 44 graph->AddBlock(block); 45 entry->AddSuccessor(block); 47 block->AddInstruction(new (&allocator) HInstanceFieldGet(parameter, 56 block->AddInstruction(new (&allocator) HInstanceFieldGet(parameter, 65 HInstruction* to_remove = block->GetLastInstruction(); 66 block->AddInstruction(new (&allocator) HInstanceFieldGet(parameter, 75 HInstruction* different_offset = block->GetLastInstruction(); 77 block->AddInstruction(new (&allocator) HInstanceFieldSet(parameter, 87 block 128 HBasicBlock* block = new (&allocator) HBasicBlock(graph); local 212 HBasicBlock* block = new (&allocator) HBasicBlock(graph); local [all...] |
H A D | intrinsics.cc | 571 HBasicBlock* block = it.Current(); local 572 for (HInstructionIterator inst_it(block->GetInstructions()); !inst_it.Done();
|
H A D | pc_relative_fixups_x86.cc | 37 // entry block) and relieve some pressure on the register allocator 128 HBasicBlock* block = neg->GetBlock(); variable 134 block->ReplaceAndRemoveInstructionWith(neg, x86_fp_neg); 147 HBasicBlock* block = switch_insn->GetBlock(); variable 154 block->ReplaceAndRemoveInstructionWith(switch_insn, x86_switch); 162 // Insert the base at the start of the entry block, move it to a better 250 // The generated HX86ComputeBaseMethodAddress in the entry block needed as an
|
H A D | prepare_for_register_allocation.cc | 24 HBasicBlock* block = it.Current(); local 26 for (HInstructionIterator inst_it(block->GetInstructions()); !inst_it.Done(); 222 // Check for code motion taking the input to a different block. 231 CHECK(between != nullptr); // User must be after input in the same block.
|
H A D | block_builder.cc | 29 HBasicBlock* block = branch_targets_[store_dex_pc]; local 30 if (block == nullptr) { 31 block = new (arena_) HBasicBlock(graph_, semantic_dex_pc); 32 branch_targets_[store_dex_pc] = block; 34 DCHECK_EQ(block->GetDexPc(), semantic_dex_pc); 35 return block; 39 // Create the first block for the dex instructions, single successor of the entry block. 44 // places where the program might fall through into/out of the a block and 53 // TODO: Do not create block i 121 HBasicBlock* block = graph_->GetEntryBlock(); local 191 GetTryItem( HBasicBlock* block, const ArenaSafeMap<uint32_t, const DexFile::TryItem*>& try_block_info) argument [all...] |
H A D | register_allocator_test.cc | 469 HBasicBlock* block = new (allocator) HBasicBlock(graph); local 470 graph->AddBlock(block); 471 entry->AddSuccessor(block); 482 block->AddInstruction(test); 483 block->AddInstruction(new (allocator) HIf(test)); 491 block->AddSuccessor(then); 492 block->AddSuccessor(else_); 622 HBasicBlock* block = new (allocator) HBasicBlock(graph); local 623 graph->AddBlock(block); 624 entry->AddSuccessor(block); 701 HBasicBlock* block = new (allocator) HBasicBlock(graph); local 772 HBasicBlock* block = new (allocator) HBasicBlock(graph); local 832 HBasicBlock* block = new (&allocator) HBasicBlock(graph); local [all...] |
H A D | ssa_builder.cc | 83 HBasicBlock* block = it.Current(); local 84 for (HInstructionIterator it_phis(block->GetPhis()); !it_phis.Done(); it_phis.Advance()) { 239 HBasicBlock* block = it.Current(); local 240 if (block->IsLoopHeader()) { 241 for (HInstructionIterator phi_it(block->GetPhis()); !phi_it.Done(); phi_it.Advance()) { 248 for (HInstructionIterator phi_it(block->GetPhis()); !phi_it.Done(); phi_it.Advance()) {
|
H A D | bounds_check_elimination_test.cc | 306 HBasicBlock* block = new (&allocator_) HBasicBlock(graph_); local 307 graph_->AddBlock(block); 308 entry->AddSuccessor(block); 316 block->AddInstruction(null_check); 317 block->AddInstruction(array_length); 318 block->AddInstruction(bounds_check6); 319 block->AddInstruction(array_set); 327 block->AddInstruction(null_check); 328 block->AddInstruction(array_length); 329 block 374 HBasicBlock* block = new (allocator) HBasicBlock(graph); local 490 HBasicBlock* block = new (allocator) HBasicBlock(graph); local 596 HBasicBlock* block = new (allocator) HBasicBlock(graph); local 703 HBasicBlock* block = new (allocator) HBasicBlock(graph); local 805 HBasicBlock* block = new (&allocator_) HBasicBlock(graph_); local [all...] |
H A D | code_generator_arm64.h | 353 void Bind(HBasicBlock* block) OVERRIDE; 355 vixl::Label* GetLabelOf(HBasicBlock* block) { argument 356 block = FirstNonEmptyBlock(block); 357 return &(block_labels_[block->GetBlockId()]); 369 uintptr_t GetAddressOf(HBasicBlock* block) OVERRIDE { 370 vixl::Label* block_entry_label = GetLabelOf(block); 620 // Labels for each block that will be compiled. 622 ArenaDeque<vixl::Label> block_labels_; // Indexed by block id.
|
H A D | codegen_test.cc | 674 HBasicBlock* block = graph_in->GetEntryBlock()->GetSuccessors()[0]; 676 block->InsertInstructionBefore(move, block->GetLastInstruction()); 722 HBasicBlock* block = graph_in->GetEntryBlock()->GetSuccessors()[0]; 724 block->InsertInstructionBefore(move, block->GetLastInstruction()); 790 HBasicBlock* block = graph_in->GetEntryBlock()->GetSuccessors()[0]; 792 block->InsertInstructionBefore(move, block->GetLastInstruction()); 833 HBasicBlock* block local [all...] |
H A D | gvn.cc | 366 // Per-block GVN. Will also update the ValueSet of the dominated and 368 void VisitBasicBlock(HBasicBlock* block); 374 ValueSet* FindSetFor(HBasicBlock* block) const { 375 ValueSet* result = sets_[block->GetBlockId()]; 376 DCHECK(result != nullptr) << "Could not find set for block B" << block->GetBlockId(); 380 void AbandonSetFor(HBasicBlock* block) { argument 381 DCHECK(sets_[block->GetBlockId()] != nullptr) 382 << "Block B" << block->GetBlockId() << " expected to have a set"; 383 sets_[block 419 VisitBasicBlock(HBasicBlock* block) argument 534 FindVisitedBlockWithRecyclableSet( HBasicBlock* block, const ValueSet& reference_set) const argument [all...] |
H A D | ssa_liveness_analysis.cc | 46 static void AddToListForLinearization(ArenaVector<HBasicBlock*>* worklist, HBasicBlock* block) { argument 47 HLoopInformation* block_loop = block->GetLoopInformation(); 55 // The block can be processed immediately. 59 worklist->insert(insert_pos.base(), 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 118 HBasicBlock* block = it.Current(); local 161 HBasicBlock* block = it.Current(); local 213 HBasicBlock* block = it.Current(); local 332 const HBasicBlock& block = *it.Current(); local 347 UpdateLiveOut(const HBasicBlock& block) argument 360 UpdateLiveIn(const HBasicBlock& block) argument 394 HBasicBlock* block = liveness.GetBlockFromPosition(GetStart() / 2); local [all...] |
/art/runtime/base/ |
H A D | scoped_flock.cc | 32 bool ScopedFlock::Init(const char* filename, int flags, bool block, std::string* error_msg) { argument 42 int operation = block ? LOCK_EX : (LOCK_EX | LOCK_NB); 45 // File is locked by someone else and we are required not to block; 63 if (block) { 68 // semantics. Thus, if we are not require to block return failure when racing. 74 if (block) {
|