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