Home | History | Annotate | Download | only in crankshaft

Lines Matching refs:block

538     // Compute side effects for the block.
539 HBasicBlock* block = graph()->blocks()->at(i);
541 if (block->IsReachable() && !block->IsDeoptimizing()) {
542 int id = block->block_id();
543 for (HInstructionIterator it(block); !it.Done(); it.Advance()) {
550 if (block->IsLoopHeader()) {
555 if (block->HasParentLoopHeader()) {
556 HBasicBlock* with_parent = block;
557 if (block->IsLoopHeader()) side_effects = loop_side_effects_[id];
573 HBasicBlock* block = graph()->blocks()->at(i);
574 if (block->IsLoopHeader()) {
575 SideEffects side_effects = loop_side_effects_[block->block_id()];
578 os << "Try loop invariant motion for " << *block << " changes "
581 HBasicBlock* last = block->loop_information()->GetLastBackEdge();
582 for (int j = block->block_id(); j <= last->block_id(); ++j) {
583 ProcessLoopBlock(graph()->blocks()->at(j), block, side_effects);
591 HBasicBlock* block,
597 os << "Loop invariant code motion for " << *block << " depends on "
600 HInstruction* instr = block->first();
615 can_hoist = block->IsLoopSuccessorDominator();
627 TRACE_GVN_2("Hoisting loop invariant instruction i%d to block B%d\n",
643 // If we've disabled code motion or we're in a block that unconditionally
645 return graph()->allow_code_motion() && !instr->block()->IsDeoptimizing() &&
646 instr->block()->IsReachable();
655 HBasicBlock* block = dominated->predecessors()->at(i);
656 if (dominator->block_id() < block->block_id() &&
657 block->block_id() < dominated->block_id() &&
658 !visited_on_paths_.Contains(block->block_id())) {
659 visited_on_paths_.Add(block->block_id());
660 side_effects.Add(block_side_effects_[block->block_id()]);
661 if (block->IsLoopHeader()) {
662 side_effects.Add(loop_side_effects_[block->block_id()]);
665 dominator, block));
687 HBasicBlock* block() { return block_; }
695 // that call can reuse "this" if we are at the last dominated block.
696 *dominator = block();
703 *dominator = dominator_state->block();
714 void Initialize(HBasicBlock* block,
719 block_ = block;
722 length_ = block->dominated_blocks()->length();
730 HBasicBlock* block,
735 Initialize(block, map, dominators, true, zone);
755 GvnBasicBlockState* push(Zone* zone, HBasicBlock* block) {
758 new(zone) GvnBasicBlockState(this, block, map(), dominators(), zone);
760 next_->Initialize(block, map(), dominators(), true, zone);
767 TRACE_GVN_2("Backtracking from block B%d to block b%d\n",
768 block()->block_id(),
769 previous_->block()->block_id())
797 HBasicBlock* block = current->block();
801 TRACE_GVN_2("Analyzing block B%d%s\n",
802 block->block_id(),
803 block->IsLoopHeader() ? " (loop header)" : "");
806 if (block->IsLoopHeader()) {
807 map->Kill(loop_side_effects_[block->block_id()]);
808 dominators->Kill(loop_side_effects_[block->block_id()]);
811 // Go through all instructions of the current block.
812 for (HInstructionIterator it(block); !it.Done(); it.Advance()) {
871 HBasicBlock* dominated = next->block();
875 // Kill everything killed on any path between this block and the
876 // dominated block. We don't have to traverse these paths if the
878 // of block ids (block_id, dominated_id) is empty there are no such