comparison src/share/vm/opto/split_if.cpp @ 6144:5e990493719e

7173340: C2: code cleanup: use PhaseIterGVN::replace_edge(Node*, int, Node*) where applicable Summary: replace frequent C2 optimizer code patterns with new methods calls Reviewed-by: kvn, twisti Contributed-by: vladimir.x.ivanov@oracle.com
author kvn
date Tue, 12 Jun 2012 16:23:31 -0700
parents 8805f8c1e23e
children e626685e9f6c
comparison
equal deleted inserted replaced
6143:8b0a4867acf0 6144:5e990493719e
135 assert( iff->in(1) == bol, "" ); 135 assert( iff->in(1) == bol, "" );
136 // Get control block of either the CMove or the If input 136 // Get control block of either the CMove or the If input
137 Node *iff_ctrl = iff->is_If() ? iff->in(0) : get_ctrl(iff); 137 Node *iff_ctrl = iff->is_If() ? iff->in(0) : get_ctrl(iff);
138 Node *x = bol->clone(); 138 Node *x = bol->clone();
139 register_new_node(x, iff_ctrl); 139 register_new_node(x, iff_ctrl);
140 _igvn.hash_delete(iff); 140 _igvn.replace_input_of(iff, 1, x);
141 iff->set_req(1, x);
142 _igvn._worklist.push(iff);
143 } 141 }
144 _igvn.remove_dead_node( bol ); 142 _igvn.remove_dead_node( bol );
145 --i; 143 --i;
146 } 144 }
147 } 145 }
149 for (DUIterator_Last jmin, j = n->last_outs(jmin); j >= jmin; --j) { 147 for (DUIterator_Last jmin, j = n->last_outs(jmin); j >= jmin; --j) {
150 Node* bol = n->last_out(j); 148 Node* bol = n->last_out(j);
151 assert( bol->in(1) == n, "" ); 149 assert( bol->in(1) == n, "" );
152 Node *x = n->clone(); 150 Node *x = n->clone();
153 register_new_node(x, get_ctrl(bol)); 151 register_new_node(x, get_ctrl(bol));
154 _igvn.hash_delete(bol); 152 _igvn.replace_input_of(bol, 1, x);
155 bol->set_req(1, x);
156 _igvn._worklist.push(bol);
157 } 153 }
158 _igvn.remove_dead_node( n ); 154 _igvn.remove_dead_node( n );
159 155
160 return true; 156 return true;
161 } 157 }
385 uint i; 381 uint i;
386 for( i = 0; i < use->req(); i++ ) 382 for( i = 0; i < use->req(); i++ )
387 if( use->in(i) == def ) 383 if( use->in(i) == def )
388 break; 384 break;
389 assert( i < use->req(), "def should be among use's inputs" ); 385 assert( i < use->req(), "def should be among use's inputs" );
390 _igvn.hash_delete(use); 386 _igvn.replace_input_of(use, i, new_def);
391 use->set_req(i, new_def);
392 _igvn._worklist.push(use);
393 } 387 }
394 388
395 //------------------------------do_split_if------------------------------------ 389 //------------------------------do_split_if------------------------------------
396 // Found an If getting its condition-code input from a Phi in the same block. 390 // Found an If getting its condition-code input from a Phi in the same block.
397 // Split thru the Region. 391 // Split thru the Region.