< prev index next >

src/hotspot/share/opto/loopnode.cpp

Print this page

        

*** 942,962 **** phase->C->set_major_progress(); } return RegionNode::Ideal(phase, can_reshape); } - void LoopNode::verify_strip_mined(int expect_skeleton) const { #ifdef ASSERT const OuterStripMinedLoopNode* outer = NULL; const CountedLoopNode* inner = NULL; if (is_strip_mined()) { assert(is_CountedLoop(), "no Loop should be marked strip mined"); inner = as_CountedLoop(); outer = inner->in(LoopNode::EntryControl)->as_OuterStripMinedLoop(); } else if (is_OuterStripMinedLoop()) { outer = this->as_OuterStripMinedLoop(); inner = outer->unique_ctrl_out()->as_CountedLoop(); assert(!is_strip_mined(), "outer loop shouldn't be marked strip mined"); } if (inner != NULL || outer != NULL) { assert(inner != NULL && outer != NULL, "missing loop in strip mined nest"); Node* outer_tail = outer->in(LoopNode::LoopBackControl); --- 942,966 ---- phase->C->set_major_progress(); } return RegionNode::Ideal(phase, can_reshape); } #ifdef ASSERT + void LoopNode::verify_strip_mined(int expect_skeleton) const { + if (!is_valid_counted_loop()) { + return; // Skip malformed counted loop + } const OuterStripMinedLoopNode* outer = NULL; const CountedLoopNode* inner = NULL; if (is_strip_mined()) { assert(is_CountedLoop(), "no Loop should be marked strip mined"); inner = as_CountedLoop(); outer = inner->in(LoopNode::EntryControl)->as_OuterStripMinedLoop(); } else if (is_OuterStripMinedLoop()) { outer = this->as_OuterStripMinedLoop(); inner = outer->unique_ctrl_out()->as_CountedLoop(); + assert(inner->is_valid_counted_loop(), "OuterStripMinedLoop should have been removed"); assert(!is_strip_mined(), "outer loop shouldn't be marked strip mined"); } if (inner != NULL || outer != NULL) { assert(inner != NULL && outer != NULL, "missing loop in strip mined nest"); Node* outer_tail = outer->in(LoopNode::LoopBackControl);
*** 1022,1033 **** assert(outer->outcnt() >= phis + 2 && outer->outcnt() <= phis + 2 + stores + 1, "only phis"); } assert(sfpt->outcnt() == 1, "no data node"); assert(outer_tail->outcnt() == 1 || !has_skeleton, "no data node"); } - #endif } //============================================================================= //------------------------------Ideal------------------------------------------ // Return a node which is more "ideal" than the current node. // Attempt to convert into a counted-loop. --- 1026,1037 ---- assert(outer->outcnt() >= phis + 2 && outer->outcnt() <= phis + 2 + stores + 1, "only phis"); } assert(sfpt->outcnt() == 1, "no data node"); assert(outer_tail->outcnt() == 1 || !has_skeleton, "no data node"); } } + #endif //============================================================================= //------------------------------Ideal------------------------------------------ // Return a node which is more "ideal" than the current node. // Attempt to convert into a counted-loop.
< prev index next >