equal
deleted
inserted
replaced
105 CallNode* call = rgn->as_Call(); |
105 CallNode* call = rgn->as_Call(); |
106 IdealLoopTree* loop = get_loop(call); |
106 IdealLoopTree* loop = get_loop(call); |
107 rgn = new RegionNode(1); |
107 rgn = new RegionNode(1); |
108 rgn->add_req(uncommon_proj); |
108 rgn->add_req(uncommon_proj); |
109 register_control(rgn, loop, uncommon_proj); |
109 register_control(rgn, loop, uncommon_proj); |
110 _igvn.hash_delete(call); |
110 _igvn.replace_input_of(call, 0, rgn); |
111 call->set_req(0, rgn); |
|
112 // When called from beautify_loops() idom is not constructed yet. |
111 // When called from beautify_loops() idom is not constructed yet. |
113 if (_idom != NULL) { |
112 if (_idom != NULL) { |
114 set_idom(call, rgn, dom_depth(rgn)); |
113 set_idom(call, rgn, dom_depth(rgn)); |
115 } |
114 } |
116 } else { |
115 } else { |
164 } |
163 } |
165 assert(!has_phi || rgn->req() > 3, "no phis when region is created"); |
164 assert(!has_phi || rgn->req() > 3, "no phis when region is created"); |
166 |
165 |
167 if (new_entry == NULL) { |
166 if (new_entry == NULL) { |
168 // Attach if_cont to iff |
167 // Attach if_cont to iff |
169 _igvn.hash_delete(iff); |
168 _igvn.replace_input_of(iff, 0, if_cont); |
170 iff->set_req(0, if_cont); |
|
171 if (_idom != NULL) { |
169 if (_idom != NULL) { |
172 set_idom(iff, if_cont, dom_depth(iff)); |
170 set_idom(iff, if_cont, dom_depth(iff)); |
173 } |
171 } |
174 } |
172 } |
175 return if_cont->as_Proj(); |
173 return if_cont->as_Proj(); |
192 assert(rgn->is_Call(), "must be call uct"); |
190 assert(rgn->is_Call(), "must be call uct"); |
193 CallNode* call = rgn->as_Call(); |
191 CallNode* call = rgn->as_Call(); |
194 rgn = new RegionNode(1); |
192 rgn = new RegionNode(1); |
195 register_new_node_with_optimizer(rgn); |
193 register_new_node_with_optimizer(rgn); |
196 rgn->add_req(uncommon_proj); |
194 rgn->add_req(uncommon_proj); |
197 hash_delete(call); |
195 replace_input_of(call, 0, rgn); |
198 call->set_req(0, rgn); |
|
199 } else { |
196 } else { |
200 // Find region's edge corresponding to uncommon_proj |
197 // Find region's edge corresponding to uncommon_proj |
201 for (; proj_index < rgn->req(); proj_index++) |
198 for (; proj_index < rgn->req(); proj_index++) |
202 if (rgn->in(proj_index) == uncommon_proj) break; |
199 if (rgn->in(proj_index) == uncommon_proj) break; |
203 assert(proj_index < rgn->req(), "sanity"); |
200 assert(proj_index < rgn->req(), "sanity"); |