comparison src/share/vm/opto/loopTransform.cpp @ 6636:0acd345fd810

7160161: Missed safepoint in non-Counted loop Summary: Do not remove safepoints during peeling optimization. Reviewed-by: twisti
author kvn
date Wed, 29 Aug 2012 13:02:40 -0700
parents 5e990493719e
children e626685e9f6c 521c82b9cbf8
comparison
equal deleted inserted replaced
6635:83b6305a5638 6636:0acd345fd810
545 for (uint j3 = 0; j3 < loop->_body.size(); j3++) { 545 for (uint j3 = 0; j3 < loop->_body.size(); j3++) {
546 Node *old = loop->_body.at(j3); 546 Node *old = loop->_body.at(j3);
547 Node *nnn = old_new[old->_idx]; 547 Node *nnn = old_new[old->_idx];
548 if (!has_ctrl(nnn)) 548 if (!has_ctrl(nnn))
549 set_idom(nnn, idom(nnn), dd-1); 549 set_idom(nnn, idom(nnn), dd-1);
550 // While we're at it, remove any SafePoints from the peeled code
551 if (old->Opcode() == Op_SafePoint) {
552 Node *nnn = old_new[old->_idx];
553 lazy_replace(nnn,nnn->in(TypeFunc::Control));
554 }
555 } 550 }
556 551
557 // Now force out all loop-invariant dominating tests. The optimizer 552 // Now force out all loop-invariant dominating tests. The optimizer
558 // finds some, but we _know_ they are all useless. 553 // finds some, but we _know_ they are all useless.
559 peeled_dom_test_elim(loop,old_new); 554 peeled_dom_test_elim(loop,old_new);