7160161: Missed safepoint in non-Counted loop

Do not remove safepoints during peeling optimization.

Reviewed-by: twisti
This commit is contained in:
Vladimir Kozlov 2012-08-29 13:02:40 -07:00
parent 373b8ccd27
commit da65cc4532
3 changed files with 45 additions and 26 deletions

View file

@ -547,11 +547,6 @@ void PhaseIdealLoop::do_peeling( IdealLoopTree *loop, Node_List &old_new ) {
Node *nnn = old_new[old->_idx];
if (!has_ctrl(nnn))
set_idom(nnn, idom(nnn), dd-1);
// While we're at it, remove any SafePoints from the peeled code
if (old->Opcode() == Op_SafePoint) {
Node *nnn = old_new[old->_idx];
lazy_replace(nnn,nnn->in(TypeFunc::Control));
}
}
// Now force out all loop-invariant dominating tests. The optimizer