src/share/vm/opto/loopTransform.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/opto/loopTransform.cpp Wed Aug 10 12:44:31 2011
--- new/src/share/vm/opto/loopTransform.cpp Wed Aug 10 12:44:31 2011
*** 2097,2107 ****
--- 2097,2107 ----
return false;
if (!_head->is_CountedLoop())
return false; // Dead loop
CountedLoopNode *cl = _head->as_CountedLoop();
! if (!cl->loopexit())
! if (!cl->is_valid_counted_loop())
return false; // Malformed loop
if (!phase->is_member(this, phase->get_ctrl(cl->loopexit()->in(CountedLoopEndNode::TestValue))))
return false; // Infinite loop
#ifdef ASSERT
*** 2253,2263 ****
--- 2253,2263 ----
}
return true;
}
CountedLoopNode *cl = _head->as_CountedLoop();
! if (!cl->loopexit()) return true; // Ignore various kinds of broken loops
! if (!cl->is_valid_counted_loop()) return true; // Ignore various kinds of broken loops
// Do nothing special to pre- and post- loops
if (cl->is_pre_loop() || cl->is_post_loop()) return true;
// Compute loop trip count from profile data
*** 2634,2644 ****
--- 2634,2644 ----
return false;
}
// Must have constant stride
CountedLoopNode* head = lpt->_head->as_CountedLoop();
! if (!head->stride_is_con() || !head->is_normal_loop()) {
! if (!head->is_valid_counted_loop() || !head->is_normal_loop()) {
return false;
}
// Check that the body only contains a store of a loop invariant
// value that is indexed by the loop phi.
src/share/vm/opto/loopTransform.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File