src/share/vm/opto/cfgnode.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6625997 Cdiff src/share/vm/opto/cfgnode.cpp

src/share/vm/opto/cfgnode.cpp

Print this page

        

*** 1417,1427 **** // itself (safe for dead loops). if (in != NULL && !in->is_dead_loop_safe()) { // Check inputs of phi's inputs also. // It is much less expensive then full graph walk. uint cnt = in->req(); ! for (uint i = 1; i < cnt; ++i) { Node* m = in->in(i); if (m == (Node*)this) return UnsafeLoop; // Unsafe loop if (m != NULL && !m->is_dead_loop_safe()) { // Check the most common case (about 30% of all cases): --- 1417,1428 ---- // itself (safe for dead loops). if (in != NULL && !in->is_dead_loop_safe()) { // Check inputs of phi's inputs also. // It is much less expensive then full graph walk. uint cnt = in->req(); ! uint i = (in->is_Proj() && !in->is_CFG()) ? 0 : 1; ! for (; i < cnt; ++i) { Node* m = in->in(i); if (m == (Node*)this) return UnsafeLoop; // Unsafe loop if (m != NULL && !m->is_dead_loop_safe()) { // Check the most common case (about 30% of all cases):
*** 1465,1475 **** nstack.push(in); // Start with unique input. visited.set(in->_idx); while (nstack.size() != 0) { Node* n = nstack.pop(); uint cnt = n->req(); ! for (uint i = 1; i < cnt; i++) { // Only data paths Node* m = n->in(i); if (m == (Node*)this) { return true; // Data loop } if (m != NULL && !m->is_dead_loop_safe()) { // Only look for unsafe cases. --- 1466,1477 ---- nstack.push(in); // Start with unique input. visited.set(in->_idx); while (nstack.size() != 0) { Node* n = nstack.pop(); uint cnt = n->req(); ! uint i = (n->is_Proj() && !n->is_CFG()) ? 0 : 1; ! for (; i < cnt; i++) { Node* m = n->in(i); if (m == (Node*)this) { return true; // Data loop } if (m != NULL && !m->is_dead_loop_safe()) { // Only look for unsafe cases.
src/share/vm/opto/cfgnode.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File