95 // Make sure that the type array is big enough for |
95 // Make sure that the type array is big enough for |
96 // our new node, even though we may throw the node away. |
96 // our new node, even though we may throw the node away. |
97 // (Note: This tweaking with igvn only works because x is a new node.) |
97 // (Note: This tweaking with igvn only works because x is a new node.) |
98 _igvn.set_type(x, t); |
98 _igvn.set_type(x, t); |
99 // If x is a TypeNode, capture any more-precise type permanently into Node |
99 // If x is a TypeNode, capture any more-precise type permanently into Node |
100 // othewise it will be not updated during igvn->transform since |
100 // otherwise it will be not updated during igvn->transform since |
101 // igvn->type(x) is set to x->Value() already. |
101 // igvn->type(x) is set to x->Value() already. |
102 x->raise_bottom_type(t); |
102 x->raise_bottom_type(t); |
103 Node *y = x->Identity(&_igvn); |
103 Node *y = x->Identity(&_igvn); |
104 if( y != x ) { |
104 if( y != x ) { |
105 wins++; |
105 wins++; |
877 _igvn._worklist.push(u); |
877 _igvn._worklist.push(u); |
878 Node *x = n->clone(); // Clone computation |
878 Node *x = n->clone(); // Clone computation |
879 Node *x_ctrl = NULL; |
879 Node *x_ctrl = NULL; |
880 if( u->is_Phi() ) { |
880 if( u->is_Phi() ) { |
881 // Replace all uses of normal nodes. Replace Phi uses |
881 // Replace all uses of normal nodes. Replace Phi uses |
882 // individually, so the seperate Nodes can sink down |
882 // individually, so the separate Nodes can sink down |
883 // different paths. |
883 // different paths. |
884 uint k = 1; |
884 uint k = 1; |
885 while( u->in(k) != n ) k++; |
885 while( u->in(k) != n ) k++; |
886 u->set_req( k, x ); |
886 u->set_req( k, x ); |
887 // x goes next to Phi input path |
887 // x goes next to Phi input path |