221 _igvn.rehash_node_delayed(entry); |
221 _igvn.rehash_node_delayed(entry); |
222 IdealLoopTree* outer_loop = loop->_parent; |
222 IdealLoopTree* outer_loop = loop->_parent; |
223 |
223 |
224 Node *cont = _igvn.intcon(1); |
224 Node *cont = _igvn.intcon(1); |
225 set_ctrl(cont, C->root()); |
225 set_ctrl(cont, C->root()); |
226 Node* opq = new (C, 2) Opaque1Node(C, cont); |
226 Node* opq = new (C) Opaque1Node(C, cont); |
227 register_node(opq, outer_loop, entry, dom_depth(entry)); |
227 register_node(opq, outer_loop, entry, dom_depth(entry)); |
228 Node *bol = new (C, 2) Conv2BNode(opq); |
228 Node *bol = new (C) Conv2BNode(opq); |
229 register_node(bol, outer_loop, entry, dom_depth(entry)); |
229 register_node(bol, outer_loop, entry, dom_depth(entry)); |
230 IfNode* iff = new (C, 2) IfNode(entry, bol, PROB_MAX, COUNT_UNKNOWN); |
230 IfNode* iff = new (C) IfNode(entry, bol, PROB_MAX, COUNT_UNKNOWN); |
231 register_node(iff, outer_loop, entry, dom_depth(entry)); |
231 register_node(iff, outer_loop, entry, dom_depth(entry)); |
232 ProjNode* iffast = new (C, 1) IfTrueNode(iff); |
232 ProjNode* iffast = new (C) IfTrueNode(iff); |
233 register_node(iffast, outer_loop, iff, dom_depth(iff)); |
233 register_node(iffast, outer_loop, iff, dom_depth(iff)); |
234 ProjNode* ifslow = new (C, 1) IfFalseNode(iff); |
234 ProjNode* ifslow = new (C) IfFalseNode(iff); |
235 register_node(ifslow, outer_loop, iff, dom_depth(iff)); |
235 register_node(ifslow, outer_loop, iff, dom_depth(iff)); |
236 |
236 |
237 // Clone the loop body. The clone becomes the fast loop. The |
237 // Clone the loop body. The clone becomes the fast loop. The |
238 // original pre-header will (illegally) have 3 control users |
238 // original pre-header will (illegally) have 3 control users |
239 // (old & new loops & new if). |
239 // (old & new loops & new if). |