1.1 --- a/src/share/vm/opto/node.cpp Mon Feb 22 13:39:47 2016 -0800 1.2 +++ b/src/share/vm/opto/node.cpp Tue Mar 01 15:19:31 2016 -0800 1.3 @@ -521,6 +521,11 @@ 1.4 C->add_macro_node(n); 1.5 if (is_expensive()) 1.6 C->add_expensive_node(n); 1.7 + // If the cloned node is a range check dependent CastII, add it to the list. 1.8 + CastIINode* cast = n->isa_CastII(); 1.9 + if (cast != NULL && cast->has_range_check()) { 1.10 + C->add_range_check_cast(cast); 1.11 + } 1.12 1.13 n->set_idx(C->next_unique()); // Get new unique index as well 1.14 debug_only( n->verify_construction() ); 1.15 @@ -649,6 +654,11 @@ 1.16 if (is_expensive()) { 1.17 compile->remove_expensive_node(this); 1.18 } 1.19 + CastIINode* cast = isa_CastII(); 1.20 + if (cast != NULL && cast->has_range_check()) { 1.21 + compile->remove_range_check_cast(cast); 1.22 + } 1.23 + 1.24 if (is_SafePoint()) { 1.25 as_SafePoint()->delete_replaced_nodes(); 1.26 } 1.27 @@ -1344,6 +1354,10 @@ 1.28 if (dead->is_expensive()) { 1.29 igvn->C->remove_expensive_node(dead); 1.30 } 1.31 + CastIINode* cast = dead->isa_CastII(); 1.32 + if (cast != NULL && cast->has_range_check()) { 1.33 + igvn->C->remove_range_check_cast(cast); 1.34 + } 1.35 igvn->C->record_dead_node(dead->_idx); 1.36 // Kill all inputs to the dead guy 1.37 for (uint i=0; i < dead->req(); i++) {