1357 if (cnt == 3) { |
1357 if (cnt == 3) { |
1358 for (uint i = 1; i < cnt; i++) { |
1358 for (uint i = 1; i < cnt; i++) { |
1359 Node* in = mem->in(i); |
1359 Node* in = mem->in(i); |
1360 Node* m = optimize_memory_chain(in, t_oop, this, phase); |
1360 Node* m = optimize_memory_chain(in, t_oop, this, phase); |
1361 if (m == mem) { |
1361 if (m == mem) { |
|
1362 if (i == 1) { |
|
1363 // if the first edge was a loop, check second edge too. |
|
1364 // If both are replaceable - we are in an infinite loop |
|
1365 Node *n = optimize_memory_chain(mem->in(2), t_oop, this, phase); |
|
1366 if (n == mem) { |
|
1367 break; |
|
1368 } |
|
1369 } |
1362 set_req(Memory, mem->in(cnt - i)); |
1370 set_req(Memory, mem->in(cnt - i)); |
1363 return this; // made change |
1371 return this; // made change |
1364 } |
1372 } |
1365 } |
1373 } |
1366 } |
1374 } |