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