src/share/vm/opto/ifnode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/opto/ifnode.cpp Thu Apr 28 15:53:49 2011
--- new/src/share/vm/opto/ifnode.cpp Thu Apr 28 15:53:49 2011
*** 234,243 ****
--- 234,244 ----
predicate_proj = proj;
}
}
Node* predicate_c = NULL;
Node* predicate_x = NULL;
+ bool counted_loop = r->is_CountedLoop();
Node *region_c = new (igvn->C, req_c + 1) RegionNode(req_c + 1);
Node *phi_c = con1;
uint len = r->req();
Node *region_x = new (igvn->C, len - req_c) RegionNode(len - req_c);
*** 292,311 ****
--- 293,312 ----
Node *iff_c_t = phase->transform(new (igvn->C, 1) IfTrueNode (iff_c));
Node *iff_c_f = phase->transform(new (igvn->C, 1) IfFalseNode(iff_c));
if (predicate_c != NULL) {
assert(predicate_x == NULL, "only one predicate entry expected");
// Clone loop predicates to each path
! iff_c_t = igvn->clone_loop_predicates(predicate_c, iff_c_t, !counted_loop);
! iff_c_f = igvn->clone_loop_predicates(predicate_c, iff_c_f, !counted_loop);
}
Node *iff_x_t = phase->transform(new (igvn->C, 1) IfTrueNode (iff_x));
Node *iff_x_f = phase->transform(new (igvn->C, 1) IfFalseNode(iff_x));
if (predicate_x != NULL) {
assert(predicate_c == NULL, "only one predicate entry expected");
// Clone loop predicates to each path
! iff_x_t = igvn->clone_loop_predicates(predicate_x, iff_x_t, !counted_loop);
! iff_x_f = igvn->clone_loop_predicates(predicate_x, iff_x_f, !counted_loop);
}
// Merge the TRUE paths
Node *region_s = new (igvn->C, 3) RegionNode(3);
igvn->_worklist.push(region_s);
src/share/vm/opto/ifnode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File