Mercurial > hg > graal-compiler
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); |