< prev index next >

src/share/vm/opto/parse1.cpp

Print this page




 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       }


< prev index next >