5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 #include "incls/_precompiled.incl" 26 #include "incls/_split_if.cpp.incl" 27 28 29 //------------------------------split_thru_region------------------------------ 30 // Split Node 'n' through merge point. 31 Node *PhaseIdealLoop::split_thru_region( Node *n, Node *region ) { 32 uint wins = 0; 33 assert( n->is_CFG(), "" ); 34 assert( region->is_Region(), "" ); 35 Node *r = new (C, region->req()) RegionNode( region->req() ); 36 IdealLoopTree *loop = get_loop( n ); 37 for( uint i = 1; i < region->req(); i++ ) { 38 Node *x = n->clone(); 39 Node *in0 = n->in(0); 40 if( in0->in(0) == region ) x->set_req( 0, in0->in(i) ); 41 for( uint j = 1; j < n->req(); j++ ) { 42 Node *in = n->in(j); 43 if( get_ctrl(in) == region ) 44 x->set_req( j, in->in(i) ); 45 } 46 _igvn.register_new_node_with_optimizer(x); | 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 #include "precompiled.hpp" 26 #include "memory/allocation.inline.hpp" 27 #include "opto/callnode.hpp" 28 #include "opto/connode.hpp" 29 #include "opto/loopnode.hpp" 30 31 32 //------------------------------split_thru_region------------------------------ 33 // Split Node 'n' through merge point. 34 Node *PhaseIdealLoop::split_thru_region( Node *n, Node *region ) { 35 uint wins = 0; 36 assert( n->is_CFG(), "" ); 37 assert( region->is_Region(), "" ); 38 Node *r = new (C, region->req()) RegionNode( region->req() ); 39 IdealLoopTree *loop = get_loop( n ); 40 for( uint i = 1; i < region->req(); i++ ) { 41 Node *x = n->clone(); 42 Node *in0 = n->in(0); 43 if( in0->in(0) == region ) x->set_req( 0, in0->in(i) ); 44 for( uint j = 1; j < n->req(); j++ ) { 45 Node *in = n->in(j); 46 if( get_ctrl(in) == region ) 47 x->set_req( j, in->in(i) ); 48 } 49 _igvn.register_new_node_with_optimizer(x); |