src/share/vm/opto/cfgnode.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/vm/opto/cfgnode.cpp	Fri Jan 22 15:00:08 2016
--- new/src/share/vm/opto/cfgnode.cpp	Fri Jan 22 15:00:08 2016

*** 1060,1069 **** --- 1060,1078 ---- } assert(jt == ft, ""); } #endif //ASSERT + if (l && ((const Node*)l->phi() == this) && + phase->type(l->in(LoopNode::LoopBackControl)) == Type::TOP) { + // During CCP, if we saturate the type of a counted loop's Phi + // before the special code for counted loop above has a chance to + // run (that is as long as the type of the backedge's control is + // top), we might end up with non monotonic types + return ft; + } + // Deal with conversion problems found in data loops. ft = phase->saturate(ft, phase->type_or_null(this), _type); return ft; }

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