src/share/vm/opto/loopPredicate.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/share/vm/opto/loopPredicate.cpp

src/share/vm/opto/loopPredicate.cpp

Print this page
rev 8160 : 8078426: mb/jvm/compiler/InterfaceCalls/testAC2 - assert(predicate_proj == 0L) failed: only one predicate entry expected
Summary: split if finds predicates on several incoming paths when unswitched's loops are optimized out
Reviewed-by:
rev 8999 : 8134974: 8130847 broken with loop predicates
Summary: Pinned eliminated arraycopy loads in uncommon trap path for loop predicates may need to be moved
Reviewed-by:

*** 110,119 **** --- 110,126 ---- _igvn.replace_input_of(call, 0, rgn); // When called from beautify_loops() idom is not constructed yet. if (_idom != NULL) { set_idom(call, rgn, dom_depth(rgn)); } + for (DUIterator_Fast imax, i = uncommon_proj->fast_outs(imax); i < imax; i++) { + Node* n = uncommon_proj->fast_out(i); + if (n->is_Load() || n->is_Store()) { + _igvn.replace_input_of(n, 0, rgn); + --i; --imax; + } + } } else { // Find region's edge corresponding to uncommon_proj for (; proj_index < rgn->req(); proj_index++) if (rgn->in(proj_index) == uncommon_proj) break; assert(proj_index < rgn->req(), "sanity");
src/share/vm/opto/loopPredicate.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File