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