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);
400 if (block->IsReachable() && !block->IsDeoptimizing()) {
401 int id = block->block_id();
402 for (HInstructionIterator it(block); !it.Done(); it.Advance()) {
409 if (block->IsLoopHeader()) {
414 if (block->HasParentLoopHeader()) {
415 HBasicBlock* with_parent = block;
416 if (block->IsLoopHeader()) side_effects = loop_side_effects_[id];
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();
573 TRACE_GVN_2("Hoisting loop invariant instruction i%d to block B%d\n",
611 // If we've disabled code motion or we're in a block that unconditionally
613 return AllowCodeMotion() && !instr->block()->IsDeoptimizing() &&
614 instr->block()->IsReachable();
623 HBasicBlock* block = dominated->predecessors()->at(i);
624 if (dominator->block_id() < block->block_id() &&
625 block->block_id() < dominated->block_id() &&
626 !visited_on_paths_.Contains(block->block_id())) {
627 visited_on_paths_.Add(block->block_id());
628 side_effects.Add(block_side_effects_[block->block_id()]);
629 if (block->IsLoopHeader()) {
630 side_effects.Add(loop_side_effects_[block->block_id()]);
633 dominator, block));
655 HBasicBlock* block() { return block_; }
663 // that call can reuse "this" if we are at the last dominated block.
664 *dominator = block();
671 *dominator = dominator_state->block();
682 void Initialize(HBasicBlock* block,
687 block_ = block;
690 length_ = block->dominated_blocks()->length();
698 HBasicBlock* block,
703 Initialize(block, map, dominators, true, zone);
723 GvnBasicBlockState* push(Zone* zone, HBasicBlock* block) {
726 new(zone) GvnBasicBlockState(this, block, map(), dominators(), zone);
728 next_->Initialize(block, map(), dominators(), true, zone);
735 TRACE_GVN_2("Backtracking from block B%d to block b%d\n",
736 block()->block_id(),
737 previous_->block()->block_id())
764 HBasicBlock* block = current->block();
768 TRACE_GVN_2("Analyzing block B%d%s\n",
769 block->block_id(),
770 block->IsLoopHeader() ? " (loop header)" : "");
773 if (block->IsLoopHeader()) {
774 map->Kill(loop_side_effects_[block->block_id()]);
775 dominators->Kill(loop_side_effects_[block->block_id()]);
778 // Go through all instructions of the current block.
779 for (HInstructionIterator it(block); !it.Done(); it.Advance()) {
834 HBasicBlock* dominated = next->block();
838 // Kill everything killed on any path between this block and the
839 // dominated block. We don't have to traverse these paths if the
841 // of block ids (block_id, dominated_id) is empty there are no such