152 Node* iff = u->last_out(k);
153 assert(iff->is_If() || iff->is_CMove(), "unexpected node type");
154 assert( iff->in(1) == u, "" );
155 // Get control block of either the CMove or the If input
156 Node *iff_ctrl = iff->is_If() ? iff->in(0) : get_ctrl(iff);
157 Node *x1 = bol->clone();
158 Node *x2 = u->clone();
159 register_new_node(x1, iff_ctrl);
160 register_new_node(x2, iff_ctrl);
161 _igvn.replace_input_of(x2, 1, x1);
162 _igvn.replace_input_of(iff, 1, x2);
163 }
164 _igvn.remove_dead_node(u);
165 --j;
166 } else {
167 // We might see an Opaque1 from a loop limit check here
168 assert(u->is_If() || u->is_CMove() || u->Opcode() == Op_Opaque1, "unexpected node type");
169 assert(u->in(1) == bol, "");
170 // Get control block of either the CMove or the If input
171 Node *u_ctrl = u->is_If() ? u->in(0) : get_ctrl(u);
172 assert(u_ctrl != blk1 && u_ctrl != blk2, "won't converge");
173 Node *x = bol->clone();
174 register_new_node(x, u_ctrl);
175 _igvn.replace_input_of(u, 1, x);
176 --j;
177 }
178 }
179 _igvn.remove_dead_node(bol);
180 --i;
181 }
182 }
183 // Clone down this CmpNode
184 for (DUIterator_Last jmin, j = n->last_outs(jmin); j >= jmin; --j) {
185 Node* bol = n->last_out(j);
186 assert( bol->in(1) == n, "" );
187 Node *x = n->clone();
188 register_new_node(x, get_ctrl(bol));
189 _igvn.replace_input_of(bol, 1, x);
190 }
191 _igvn.remove_dead_node( n );
192
|
152 Node* iff = u->last_out(k);
153 assert(iff->is_If() || iff->is_CMove(), "unexpected node type");
154 assert( iff->in(1) == u, "" );
155 // Get control block of either the CMove or the If input
156 Node *iff_ctrl = iff->is_If() ? iff->in(0) : get_ctrl(iff);
157 Node *x1 = bol->clone();
158 Node *x2 = u->clone();
159 register_new_node(x1, iff_ctrl);
160 register_new_node(x2, iff_ctrl);
161 _igvn.replace_input_of(x2, 1, x1);
162 _igvn.replace_input_of(iff, 1, x2);
163 }
164 _igvn.remove_dead_node(u);
165 --j;
166 } else {
167 // We might see an Opaque1 from a loop limit check here
168 assert(u->is_If() || u->is_CMove() || u->Opcode() == Op_Opaque1, "unexpected node type");
169 assert(u->in(1) == bol, "");
170 // Get control block of either the CMove or the If input
171 Node *u_ctrl = u->is_If() ? u->in(0) : get_ctrl(u);
172 assert((u_ctrl != blk1 && u_ctrl != blk2) || u->is_CMove(), "won't converge");
173 Node *x = bol->clone();
174 register_new_node(x, u_ctrl);
175 _igvn.replace_input_of(u, 1, x);
176 --j;
177 }
178 }
179 _igvn.remove_dead_node(bol);
180 --i;
181 }
182 }
183 // Clone down this CmpNode
184 for (DUIterator_Last jmin, j = n->last_outs(jmin); j >= jmin; --j) {
185 Node* bol = n->last_out(j);
186 assert( bol->in(1) == n, "" );
187 Node *x = n->clone();
188 register_new_node(x, get_ctrl(bol));
189 _igvn.replace_input_of(bol, 1, x);
190 }
191 _igvn.remove_dead_node( n );
192
|