519 } |
519 } |
520 if (is_macro()) |
520 if (is_macro()) |
521 C->add_macro_node(n); |
521 C->add_macro_node(n); |
522 if (is_expensive()) |
522 if (is_expensive()) |
523 C->add_expensive_node(n); |
523 C->add_expensive_node(n); |
|
524 // If the cloned node is a range check dependent CastII, add it to the list. |
|
525 CastIINode* cast = n->isa_CastII(); |
|
526 if (cast != NULL && cast->has_range_check()) { |
|
527 C->add_range_check_cast(cast); |
|
528 } |
524 |
529 |
525 n->set_idx(C->next_unique()); // Get new unique index as well |
530 n->set_idx(C->next_unique()); // Get new unique index as well |
526 debug_only( n->verify_construction() ); |
531 debug_only( n->verify_construction() ); |
527 NOT_PRODUCT(nodes_created++); |
532 NOT_PRODUCT(nodes_created++); |
528 // Do not patch over the debug_idx of a clone, because it makes it |
533 // Do not patch over the debug_idx of a clone, because it makes it |
647 compile->remove_macro_node(this); |
652 compile->remove_macro_node(this); |
648 } |
653 } |
649 if (is_expensive()) { |
654 if (is_expensive()) { |
650 compile->remove_expensive_node(this); |
655 compile->remove_expensive_node(this); |
651 } |
656 } |
|
657 CastIINode* cast = isa_CastII(); |
|
658 if (cast != NULL && cast->has_range_check()) { |
|
659 compile->remove_range_check_cast(cast); |
|
660 } |
|
661 |
652 if (is_SafePoint()) { |
662 if (is_SafePoint()) { |
653 as_SafePoint()->delete_replaced_nodes(); |
663 as_SafePoint()->delete_replaced_nodes(); |
654 } |
664 } |
655 #ifdef ASSERT |
665 #ifdef ASSERT |
656 // We will not actually delete the storage, but we'll make the node unusable. |
666 // We will not actually delete the storage, but we'll make the node unusable. |
1342 igvn->C->remove_macro_node(dead); |
1352 igvn->C->remove_macro_node(dead); |
1343 } |
1353 } |
1344 if (dead->is_expensive()) { |
1354 if (dead->is_expensive()) { |
1345 igvn->C->remove_expensive_node(dead); |
1355 igvn->C->remove_expensive_node(dead); |
1346 } |
1356 } |
|
1357 CastIINode* cast = dead->isa_CastII(); |
|
1358 if (cast != NULL && cast->has_range_check()) { |
|
1359 igvn->C->remove_range_check_cast(cast); |
|
1360 } |
1347 igvn->C->record_dead_node(dead->_idx); |
1361 igvn->C->record_dead_node(dead->_idx); |
1348 // Kill all inputs to the dead guy |
1362 // Kill all inputs to the dead guy |
1349 for (uint i=0; i < dead->req(); i++) { |
1363 for (uint i=0; i < dead->req(); i++) { |
1350 Node *n = dead->in(i); // Get input to dead guy |
1364 Node *n = dead->in(i); // Get input to dead guy |
1351 if (n != NULL && !n->is_top()) { // Input is valid? |
1365 if (n != NULL && !n->is_top()) { // Input is valid? |