Mercurial > hg > truffle
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. |