1435 record_for_optimizer(phi); |
1435 record_for_optimizer(phi); |
1436 } |
1436 } |
1437 |
1437 |
1438 // Update the memory inputs of MemNodes with the value we computed |
1438 // Update the memory inputs of MemNodes with the value we computed |
1439 // in Phase 2 and move stores memory users to corresponding memory slices. |
1439 // in Phase 2 and move stores memory users to corresponding memory slices. |
1440 #ifdef ASSERT |
1440 |
|
1441 // Disable memory split verification code until the fix for 6984348. |
|
1442 // Currently it produces false negative results since it does not cover all cases. |
|
1443 #if 0 // ifdef ASSERT |
1441 visited.Reset(); |
1444 visited.Reset(); |
1442 Node_Stack old_mems(arena, _compile->unique() >> 2); |
1445 Node_Stack old_mems(arena, _compile->unique() >> 2); |
1443 #endif |
1446 #endif |
1444 for (uint i = 0; i < nodes_size(); i++) { |
1447 for (uint i = 0; i < nodes_size(); i++) { |
1445 Node *nmem = get_map(i); |
1448 Node *nmem = get_map(i); |
1446 if (nmem != NULL) { |
1449 if (nmem != NULL) { |
1447 Node *n = ptnode_adr(i)->_node; |
1450 Node *n = ptnode_adr(i)->_node; |
1448 assert(n != NULL, "sanity"); |
1451 assert(n != NULL, "sanity"); |
1449 if (n->is_Mem()) { |
1452 if (n->is_Mem()) { |
1450 #ifdef ASSERT |
1453 #if 0 // ifdef ASSERT |
1451 Node* old_mem = n->in(MemNode::Memory); |
1454 Node* old_mem = n->in(MemNode::Memory); |
1452 if (!visited.test_set(old_mem->_idx)) { |
1455 if (!visited.test_set(old_mem->_idx)) { |
1453 old_mems.push(old_mem, old_mem->outcnt()); |
1456 old_mems.push(old_mem, old_mem->outcnt()); |
1454 } |
1457 } |
1455 #endif |
1458 #endif |
1467 assert(n->is_Allocate() || n->is_CheckCastPP() || |
1470 assert(n->is_Allocate() || n->is_CheckCastPP() || |
1468 n->is_AddP() || n->is_Phi(), "unknown node used for set_map()"); |
1471 n->is_AddP() || n->is_Phi(), "unknown node used for set_map()"); |
1469 } |
1472 } |
1470 } |
1473 } |
1471 } |
1474 } |
1472 #ifdef ASSERT |
1475 #if 0 // ifdef ASSERT |
1473 // Verify that memory was split correctly |
1476 // Verify that memory was split correctly |
1474 while (old_mems.is_nonempty()) { |
1477 while (old_mems.is_nonempty()) { |
1475 Node* old_mem = old_mems.node(); |
1478 Node* old_mem = old_mems.node(); |
1476 uint old_cnt = old_mems.index(); |
1479 uint old_cnt = old_mems.index(); |
1477 old_mems.pop(); |
1480 old_mems.pop(); |
1478 assert(old_cnt = old_mem->outcnt(), "old mem could be lost"); |
1481 assert(old_cnt == old_mem->outcnt(), "old mem could be lost"); |
1479 } |
1482 } |
1480 #endif |
1483 #endif |
1481 } |
1484 } |
1482 |
1485 |
1483 bool ConnectionGraph::has_candidates(Compile *C) { |
1486 bool ConnectionGraph::has_candidates(Compile *C) { |