/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 | 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 | 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 | 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 | 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 | 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 | pretty_printer.h | 71 void VisitBasicBlock(HBasicBlock* block) OVERRIDE { 73 PrintInt(block->GetBlockId()); 74 const ArenaVector<HBasicBlock*>& predecessors = block->GetPredecessors(); 83 const ArenaVector<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 | 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...] |
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 | graph_checker.cc | 34 static bool IsExitTryBoundaryIntoExitBlock(HBasicBlock* block) { argument 35 if (!block->IsSingleTryBoundary()) { 39 HTryBoundary* boundary = block->GetLastInstruction()->AsTryBoundary(); 40 return block->GetPredecessors().size() == 1u && 45 void GraphChecker::VisitBasicBlock(HBasicBlock* block) { argument 46 current_block_ = block; 48 // Check consistency with respect to predecessors of `block`. 52 sorted_predecessors.assign(block->GetPredecessors().begin(), block->GetPredecessors().end()); 61 std::count(p->GetSuccessors().begin(), p->GetSuccessors().end(), block); 865 HBasicBlock* block = instruction->GetBlock(); local 995 HBasicBlock* block = instruction->GetBlock(); local [all...] |
H A D | nodes.cc | 47 void HGraph::AddBlock(HBasicBlock* block) { argument 48 block->SetBlockId(blocks_.size()); 49 blocks_.push_back(block); 56 // Nodes that we're currently visiting, indexed by block id. 58 // Number of successors visited from a given node, indexed by block id. 114 HBasicBlock* block = blocks_[i]; local 115 if (block == nullptr) continue; 116 DCHECK(block->GetPhis().IsEmpty()) << "Phis are not inserted at this stage"; 117 for (HInstructionIterator it(block->GetInstructions()); !it.Done(); it.Advance()) { 127 HBasicBlock* block local 211 UpdateDominatorOfSuccessor(HBasicBlock* block, HBasicBlock* successor) argument 282 HBasicBlock* block = it.Current(); local 294 HBasicBlock* block = it.Current(); local 304 HBasicBlock* block = it.Current(); local 311 SplitEdge(HBasicBlock* block, HBasicBlock* successor) argument 320 SplitCriticalEdge(HBasicBlock* block, HBasicBlock* successor) argument 382 HBasicBlock* block = it.Current(); local 412 HBasicBlock* block = blocks_[block_id]; local 453 HBasicBlock* block = it.Current(); local 570 Add(HBasicBlock* block) argument 574 Remove(HBasicBlock* block) argument 578 PopulateRecursive(HBasicBlock* block) argument 598 PopulateIrreducibleRecursive(HBasicBlock* block, ArenaBitVector* finalized) argument 702 HBasicBlock* block = header_->GetPredecessors()[0]; local 737 DominatesAllBackEdges(HBasicBlock* block) argument 806 Add(HInstructionList* instruction_list, HBasicBlock* block, HInstruction* instruction) argument 862 Remove(HInstructionList* instruction_list, HBasicBlock* block, HInstruction* instruction, bool ensure_safety) argument 1045 HBasicBlock* block = GetBlock(); local 1159 VisitBasicBlock(HBasicBlock* block) argument 1562 HasOnlyOneInstruction(const HBasicBlock& block) argument 1940 DeleteDeadEmptyBlock(HBasicBlock* block) argument 1958 UpdateLoopAndTryInformationOfNewBlock(HBasicBlock* block, HBasicBlock* reference, bool replace_if_back_edge) argument 2002 HBasicBlock* block = it.Current(); local [all...] |
H A D | side_effects_analysis.h | 36 SideEffects GetLoopEffects(HBasicBlock* block) const; 37 SideEffects GetBlockEffects(HBasicBlock* block) const; 56 // of the instructions in the block.
|
H A D | dead_code_elimination.h | 43 void MaybeRecordDeadBlock(HBasicBlock* block);
|
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 | reference_type_propagation.h | 74 void VisitBasicBlock(HBasicBlock* block); 77 void BoundTypeForIfNotNull(HBasicBlock* block); 78 void BoundTypeForIfInstanceOf(HBasicBlock* block);
|
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 | 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 | 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 | 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 | induction_var_range.cc | 109 static HInstruction* Insert(HBasicBlock* block, HInstruction* instruction) { argument 110 DCHECK(block != nullptr); 111 DCHECK(block->GetLastInstruction() != nullptr) << block->GetBlockId(); 113 block->InsertInstructionBefore(instruction, block->GetLastInstruction()); 204 HBasicBlock* block, 208 if (!GenerateCode(context, instruction, graph, block, lower, upper, nullptr, &b1, &b2)) { 215 HBasicBlock* block, 218 if (!GenerateCode(context, context, graph, block, nullpt 201 GenerateRangeCode(HInstruction* context, HInstruction* instruction, HGraph* graph, HBasicBlock* block, HInstruction** lower, HInstruction** upper) argument 213 GenerateTakenTest(HInstruction* context, HGraph* graph, HBasicBlock* block, HInstruction** taken_test) argument 605 GenerateCode(HInstruction* context, HInstruction* instruction, HGraph* graph, HBasicBlock* block, HInstruction** lower, HInstruction** upper, HInstruction** taken_test, bool* needs_finite_test, bool* needs_taken_test) const argument 656 GenerateCode(HInductionVarAnalysis::InductionInfo* info, HInductionVarAnalysis::InductionInfo* trip, HGraph* graph, HBasicBlock* block, HInstruction** result, bool in_body, bool is_min) const 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_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
|
/art/runtime/base/ |
H A D | scoped_flock.h | 42 bool Init(const char* filename, int flags, bool block, std::string* error_msg);
|
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) {
|