645 // Dead block, no state reaches this block
646 continue;
647 }
648
649 // Prepare to parse this block.
650 load_state_from(block);
651
652 if (stopped()) {
653 // Block is dead.
654 continue;
655 }
656
657 NOT_PRODUCT(blocks_parsed++);
658
659 progress = true;
660 if (block->is_loop_head() || block->is_handler() || has_irreducible && !block->is_ready()) {
661 // Not all preds have been parsed. We must build phis everywhere.
662 // (Note that dead locals do not get phis built, ever.)
663 ensure_phis_everywhere();
664
665 if (block->is_SEL_head() && UseLoopPredicate) {
666 // Add predicate to single entry (not irreducible) loop head.
667 assert(!block->has_merged_backedge(), "only entry paths should be merged for now");
668 // Need correct bci for predicate.
669 // It is fine to set it here since do_one_block() will set it anyway.
670 set_parse_bci(block->start());
671 add_predicate();
672 // Add new region for back branches.
673 int edges = block->pred_count() - block->preds_parsed() + 1; // +1 for original region
674 RegionNode *r = new RegionNode(edges+1);
675 _gvn.set_type(r, Type::CONTROL);
676 record_for_igvn(r);
677 r->init_req(edges, control());
678 set_control(r);
679 // Add new phis.
680 ensure_phis_everywhere();
681 }
682
683 // Leave behind an undisturbed copy of the map, for future merges.
684 set_map(clone_map());
685 }
|
645 // Dead block, no state reaches this block
646 continue;
647 }
648
649 // Prepare to parse this block.
650 load_state_from(block);
651
652 if (stopped()) {
653 // Block is dead.
654 continue;
655 }
656
657 NOT_PRODUCT(blocks_parsed++);
658
659 progress = true;
660 if (block->is_loop_head() || block->is_handler() || has_irreducible && !block->is_ready()) {
661 // Not all preds have been parsed. We must build phis everywhere.
662 // (Note that dead locals do not get phis built, ever.)
663 ensure_phis_everywhere();
664
665 if (block->is_SEL_head()) {
666 // Add predicate to single entry (not irreducible) loop head.
667 assert(!block->has_merged_backedge(), "only entry paths should be merged for now");
668 // Need correct bci for predicate.
669 // It is fine to set it here since do_one_block() will set it anyway.
670 set_parse_bci(block->start());
671 add_predicate();
672 // Add new region for back branches.
673 int edges = block->pred_count() - block->preds_parsed() + 1; // +1 for original region
674 RegionNode *r = new RegionNode(edges+1);
675 _gvn.set_type(r, Type::CONTROL);
676 record_for_igvn(r);
677 r->init_req(edges, control());
678 set_control(r);
679 // Add new phis.
680 ensure_phis_everywhere();
681 }
682
683 // Leave behind an undisturbed copy of the map, for future merges.
684 set_map(clone_map());
685 }
|