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