870 _igvn.replace_input_of(n, 0, lca); 871 set_ctrl_and_loop(n, lca); 872 873 // Disconnect the phi now. An empty phi can confuse other 874 // optimizations in this pass of loop opts.. 875 if (phi->in(LoopNode::LoopBackControl) == phi) { 876 _igvn.replace_node(phi, phi->in(LoopNode::EntryControl)); 877 n_loop->_body.yank(phi); 878 } 879 } 880 } 881 } 882 } 883 } 884 } 885 886 //------------------------------split_if_with_blocks_pre----------------------- 887 // Do the real work in a non-recursive function. Data nodes want to be 888 // cloned in the pre-order so they can feed each other nicely. 889 Node *PhaseIdealLoop::split_if_with_blocks_pre( Node *n ) { 890 // Cloning these guys is unlikely to win 891 int n_op = n->Opcode(); 892 if( n_op == Op_MergeMem ) return n; 893 if( n->is_Proj() ) return n; 894 // Do not clone-up CmpFXXX variations, as these are always 895 // followed by a CmpI 896 if( n->is_Cmp() ) return n; 897 // Attempt to use a conditional move instead of a phi/branch 898 if( ConditionalMoveLimit > 0 && n_op == Op_Region ) { 899 Node *cmov = conditional_move( n ); 900 if( cmov ) return cmov; 901 } 902 if( n->is_CFG() || n->is_LoadStore() ) 903 return n; 904 if( n_op == Op_Opaque1 || // Opaque nodes cannot be mod'd 905 n_op == Op_Opaque2 ) { 906 if( !C->major_progress() ) // If chance of no more loop opts... 907 _igvn._worklist.push(n); // maybe we'll remove them 908 return n; 909 } | 870 _igvn.replace_input_of(n, 0, lca); 871 set_ctrl_and_loop(n, lca); 872 873 // Disconnect the phi now. An empty phi can confuse other 874 // optimizations in this pass of loop opts.. 875 if (phi->in(LoopNode::LoopBackControl) == phi) { 876 _igvn.replace_node(phi, phi->in(LoopNode::EntryControl)); 877 n_loop->_body.yank(phi); 878 } 879 } 880 } 881 } 882 } 883 } 884 } 885 886 //------------------------------split_if_with_blocks_pre----------------------- 887 // Do the real work in a non-recursive function. Data nodes want to be 888 // cloned in the pre-order so they can feed each other nicely. 889 Node *PhaseIdealLoop::split_if_with_blocks_pre( Node *n ) { 890 BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2(); 891 Node* bs_res = bs->split_if_pre(this, n); 892 if (bs_res != NULL) { 893 return bs_res; 894 } 895 // Cloning these guys is unlikely to win 896 int n_op = n->Opcode(); 897 if( n_op == Op_MergeMem ) return n; 898 if( n->is_Proj() ) return n; 899 // Do not clone-up CmpFXXX variations, as these are always 900 // followed by a CmpI 901 if( n->is_Cmp() ) return n; 902 // Attempt to use a conditional move instead of a phi/branch 903 if( ConditionalMoveLimit > 0 && n_op == Op_Region ) { 904 Node *cmov = conditional_move( n ); 905 if( cmov ) return cmov; 906 } 907 if( n->is_CFG() || n->is_LoadStore() ) 908 return n; 909 if( n_op == Op_Opaque1 || // Opaque nodes cannot be mod'd 910 n_op == Op_Opaque2 ) { 911 if( !C->major_progress() ) // If chance of no more loop opts... 912 _igvn._worklist.push(n); // maybe we'll remove them 913 return n; 914 } |