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

123

/art/compiler/optimizing/
H A Dcommon_dominator.h36 // 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 Dside_effects_analysis.cc30 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 Ddead_code_elimination.cc33 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 Dblock_builder.cc29 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 Dselect_generator.cc23 // 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 Dgvn_test.cc43 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 Dpretty_printer.h71 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 Dgvn.cc366 // 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 Dssa_liveness_analysis.cc46 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 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 Dgraph_checker.cc34 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 Dnodes.cc47 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 Dside_effects_analysis.h36 SideEffects GetLoopEffects(HBasicBlock* block) const;
37 SideEffects GetBlockEffects(HBasicBlock* block) const;
56 // of the instructions in the block.
H A Ddead_code_elimination.h43 void MaybeRecordDeadBlock(HBasicBlock* block);
H A Dlicm.cc22 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 Dreference_type_propagation.h74 void VisitBasicBlock(HBasicBlock* block);
77 void BoundTypeForIfNotNull(HBasicBlock* block);
78 void BoundTypeForIfInstanceOf(HBasicBlock* block);
H A Dfind_loops_test.cc41 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 Dbounds_check_elimination_test.cc306 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 Dconstant_folding_test.cc749 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 Dconstant_folding.cc29 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 Dinduction_var_range.cc109 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 Dregister_allocator_test.cc469 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 Dssa_phi_elimination.cc38 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 Dscoped_flock.h42 bool Init(const char* filename, int flags, bool block, std::string* error_msg);
H A Dscoped_flock.cc32 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) {

Completed in 226 milliseconds

123