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

12

/art/compiler/optimizing/
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 Dbounds_check_elimination.cc520 bool IsAddedBlock(HBasicBlock* block) const {
521 return block->GetBlockId() >= initial_block_size_;
551 void VisitBasicBlock(HBasicBlock* block) OVERRIDE {
552 DCHECK(!IsAddedBlock(block));
554 HGraphVisitor::VisitBasicBlock(block);
558 AddComparesWithDeoptimization(block); variable
583 // Return the map of proven value ranges at the beginning of a basic block.
609 // Helper method to assign a new range to an instruction in given basic block.
705 HBasicBlock* block = instruction->GetBlock(); local
715 ValueRange* left_range = LookupValueRange(left, block);
807 HBasicBlock* block = bounds_check->GetBlock(); variable
1168 AddCompareWithDeoptimization(HBasicBlock* block, HInstruction* array_length, HInstruction* base, int32_t min_c, int32_t max_c) argument
1196 AddComparesWithDeoptimization(HBasicBlock* block) argument
1347 HBasicBlock* block = GetPreHeader(loop, instruction); local
1362 DynamicBCESeemsProfitable(HLoopInformation* loop, HBasicBlock* block) argument
1445 HBasicBlock* block = GetPreHeader(loop, check); local
1508 HBasicBlock* block = it->second; local
1520 InsertDeoptInLoop(HLoopInformation* loop, HBasicBlock* block, HInstruction* condition) argument
1534 HBasicBlock* block = bounds_check->GetBlock(); local
1544 HBasicBlock* block = GetPreHeader(loop, instruction); 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 Dcode_generator.cc149 HBasicBlock* block = (*block_order_)[i]; local
150 if (!block->IsSingleJump()) {
151 return block;
157 HBasicBlock* CodeGenerator::FirstNonEmptyBlock(HBasicBlock* block) const {
158 while (block->IsSingleJump()) {
159 block = block->GetSuccessors()[0];
161 return block;
223 HBasicBlock* block = (*block_order_)[current_block_index_]; local
224 // Don't generate code for an empty block
1122 HBasicBlock* block = suspend_check->GetBlock(); local
[all...]
H A Dcode_generator_arm.cc57 // S registers. Therefore there is no need to block it.
73 // Live registers will be restored in the catch block if caught.
97 // Live registers will be restored in the catch block if caught.
145 // If not null, the block to branch to after the suspend check.
165 // Live registers will be restored in the catch block if caught.
845 // now, just block them.
952 void CodeGeneratorARM::Bind(HBasicBlock* block) { argument
953 Label* label = GetLabelOf(block);
1212 HBasicBlock* block = got->GetBlock(); local
1215 HLoopInformation* info = block
4809 HBasicBlock* block = instruction->GetBlock(); local
[all...]
H A Dcode_generator_arm64.cc230 // Live registers will be restored in the catch block if caught.
260 // Live registers will be restored in the catch block if caught.
374 // Live registers will be restored in the catch block if caught.
422 // If not null, the block to branch to after the suspend check.
1059 void CodeGeneratorARM64::Bind(HBasicBlock* block) { argument
1060 __ Bind(GetLabelOf(block));
1116 // now, just block them.
1696 // We use a block to end the scratch scope before the write barrier, thus
2199 // We use a block to end the scratch scope before the write barrier, thus
2770 HBasicBlock* block 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 Dcode_generator_mips.cc156 // Live registers will be restored in the catch block if caught.
192 // Live registers will be restored in the catch block if caught.
318 // Live registers will be restored in the catch block if caught.
368 // If not null, the block to branch to after the suspend check.
803 void CodeGeneratorMIPS::Bind(HBasicBlock* block) { argument
804 __ Bind(GetLabelOf(block));
2586 HBasicBlock* block = got->GetBlock(); local
2588 HLoopInformation* info = block->GetLoopInformation();
2590 if (info != nullptr && info->IsBackEdge(*block) && info->HasSuspendCheck()) {
2595 if (block
4677 HBasicBlock* block = instruction->GetBlock(); local
[all...]
H A Dcode_generator_mips64.cc117 // Live registers will be restored in the catch block if caught.
152 // Live registers will be restored in the catch block if caught.
272 // Live registers will be restored in the catch block if caught.
320 // If not null, the block to branch to after the suspend check.
627 void CodeGeneratorMIPS64::Bind(HBasicBlock* block) { argument
628 __ Bind(GetLabelOf(block));
2205 HBasicBlock* block = got->GetBlock(); local
2207 HLoopInformation* info = block->GetLoopInformation();
2209 if (info != nullptr && info->IsBackEdge(*block) && info->HasSuspendCheck()) {
2214 if (block
3808 HBasicBlock* block = instruction->GetBlock(); local
[all...]
H A Dcode_generator_x86.cc61 // Live registers will be restored in the catch block if caught.
87 // Live registers will be restored in the catch block if caught.
139 // Live registers will be restored in the catch block if caught.
894 void CodeGeneratorX86::Bind(HBasicBlock* block) { argument
895 __ Bind(GetLabelOf(block));
1128 HBasicBlock* block = got->GetBlock(); local
1131 HLoopInformation* info = block->GetLoopInformation();
1132 if (info != nullptr && info->IsBackEdge(*block) && info->HasSuspendCheck()) {
1137 if (block->IsEntryBlock() && (previous != nullptr) && previous->IsSuspendCheck()) {
4776 // we do not enter this block, a
5573 HBasicBlock* block = instruction->GetBlock(); local
7270 HBasicBlock* block = switch_instr_->GetBlock(); local
[all...]
H A Dcode_generator_x86_64.cc65 // Live registers will be restored in the catch block if caught.
91 // Live registers will be restored in the catch block if caught.
193 // Live registers will be restored in the catch block if caught.
1119 void CodeGeneratorX86_64::Bind(HBasicBlock* block) { argument
1120 __ Bind(GetLabelOf(block));
1229 HBasicBlock* block = got->GetBlock(); local
1232 HLoopInformation* info = block->GetLoopInformation();
1233 if (info != nullptr && info->IsBackEdge(*block) && info->HasSuspendCheck()) {
1238 if (block->IsEntryBlock() && (previous != nullptr) && previous->IsSuspendCheck()) {
5068 HBasicBlock* block local
6693 HBasicBlock* block = switch_instr_->GetBlock(); local
[all...]
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 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 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 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 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 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 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_visualizer.cc254 void PrintPredecessors(HBasicBlock* block) { argument
257 for (HBasicBlock* predecessor : block->GetPredecessors()) {
260 if (block->IsEntryBlock() && (disasm_info_ != nullptr)) {
266 void PrintSuccessors(HBasicBlock* block) { argument
269 for (HBasicBlock* successor : block->GetNormalSuccessors()) {
275 void PrintExceptionHandlers(HBasicBlock* block) { argument
278 for (HBasicBlock* handler : block->GetExceptionalSuccessors()) {
281 if (block->IsExitBlock() &&
621 StartTag("block");
648 EndTag("block");
714 PrintPredecessors(block); variable
715 PrintSuccessors(block); variable
716 PrintExceptionHandlers(block); variable
[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 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 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 Dinliner.cc75 // Because we are changing the graph when inlining, we need to remember the next block.
80 HBasicBlock* block = next_block; local
82 for (HInstruction* instruction = block->GetFirstInstruction(); instruction != nullptr;) {
558 // Spit the block after the compare: `cursor_block` will now be the start of the diamond,
559 // and the returned block is the start of the then branch (that could contain multiple blocks).
562 // Split the block containing the invoke before and after the invoke. The returned block
564 // the diamond. The returned block of the split after will be the merge block
570 // If the methods we are inlining return a value, we create a phi in the merge block
[all...]
H A Dinstruction_builder.cc36 ArenaVector<HInstruction*>* HInstructionBuilder::GetLocalsFor(HBasicBlock* block) { argument
37 ArenaVector<HInstruction*>* locals = &locals_for_[block->GetBlockId()];
42 if (block->IsCatchBlock()) {
57 block->AddPhi(phi);
66 HInstruction* HInstructionBuilder::ValueOfLocalAt(HBasicBlock* block, size_t local) { argument
67 ArenaVector<HInstruction*>* locals = GetLocalsFor(block);
88 DCHECK(!catch_block_visited) << "Catch block visited before its try block.";
93 << "No instructions throwing into a live catch block.";
96 // If the block i
231 HBasicBlock* block = loop_headers_[i - 1]; local
250 IsBlockPopulated(HBasicBlock* block) argument
589 IsFallthroughInstruction(const Instruction& instruction, uint32_t dex_pc, HBasicBlock* block) argument
[all...]

Completed in 147 milliseconds

12