Searched defs:block (Results 1 - 25 of 45) sorted by relevance

12

/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 Dlive_ranges_test.cc76 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 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 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
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 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 Dliveness_test.cc60 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 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 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 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 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 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 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 Dintrinsics.cc571 HBasicBlock* block = it.Current(); local
572 for (HInstructionIterator inst_it(block->GetInstructions()); !inst_it.Done();
H A Dpc_relative_fixups_x86.cc37 // 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 Dprepare_for_register_allocation.cc24 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 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 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_builder.cc83 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 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 Dcode_generator_arm64.h353 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 Dcodegen_test.cc674 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 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...]
/art/runtime/base/
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 474 milliseconds

12