Home | History | Annotate | Download | only in src

Lines Matching refs:block

397     // Compute side effects for the block.
398 HBasicBlock* block = graph()->blocks()->at(i);
399 int id = block->block_id();
401 for (HInstructionIterator it(block); !it.Done(); it.Advance()) {
413 if (block->IsLoopHeader()) {
418 if (block->HasParentLoopHeader()) {
419 int header_id = block->parent_loop_header()->block_id();
420 loop_side_effects_[header_id].Add(block->IsLoopHeader()
518 HBasicBlock* block = graph()->blocks()->at(i);
519 if (block->IsLoopHeader()) {
520 GVNFlagSet side_effects = loop_side_effects_[block->block_id()];
521 TRACE_GVN_2("Try loop invariant motion for block B%d %s\n",
522 block->block_id(),
527 HBasicBlock* last = block->loop_information()->GetLastBackEdge();
528 for (int j = block->block_id(); j <= last->block_id(); ++j) {
529 ProcessLoopBlock(graph()->blocks()->at(j), block, side_effects,
539 HBasicBlock* block,
547 block->block_id(),
549 HInstruction* instr = block->first();
561 can_hoist = block->IsLoopSuccessorDominator();
610 // If we've disabled code motion or we're in a block that unconditionally
612 return AllowCodeMotion() && !instr->block()->IsDeoptimizing();
621 HBasicBlock* block = dominated->predecessors()->at(i);
622 if (dominator->block_id() < block->block_id() &&
623 block->block_id() < dominated->block_id() &&
624 !visited_on_paths_.Contains(block->block_id())) {
625 visited_on_paths_.Add(block->block_id());
626 side_effects.Add(block_side_effects_[block->block_id()]);
627 if (block->IsLoopHeader()) {
628 side_effects.Add(loop_side_effects_[block->block_id()]);
631 dominator, block));
653 HBasicBlock* block() { return block_; }
661 // that call can reuse "this" if we are at the last dominated block.
662 *dominator = block();
669 *dominator = dominator_state->block();
680 void Initialize(HBasicBlock* block,
685 block_ = block;
688 length_ = block->dominated_blocks()->length();
696 HBasicBlock* block,
701 Initialize(block, map, dominators, true, zone);
721 GvnBasicBlockState* push(Zone* zone, HBasicBlock* block) {
724 new(zone) GvnBasicBlockState(this, block, map(), dominators(), zone);
726 next_->Initialize(block, map(), dominators(), true, zone);
733 TRACE_GVN_2("Backtracking from block B%d to block b%d\n",
734 block()->block_id(),
735 previous_->block()->block_id())
762 HBasicBlock* block = current->block();
766 TRACE_GVN_2("Analyzing block B%d%s\n",
767 block->block_id(),
768 block->IsLoopHeader() ? " (loop header)" : "");
771 if (block->IsLoopHeader()) {
772 map->Kill(loop_side_effects_[block->block_id()]);
773 dominators->Kill(loop_side_effects_[block->block_id()]);
776 // Go through all instructions of the current block.
777 for (HInstructionIterator it(block); !it.Done(); it.Advance()) {
832 HBasicBlock* dominated = next->block();
836 // Kill everything killed on any path between this block and the
837 // dominated block. We don't have to traverse these paths if the
839 // of block ids (block_id, dominated_id) is empty there are no such