1.1 --- a/src/share/vm/opto/node.cpp Sun Jan 31 10:07:50 2016 -0800 1.2 +++ b/src/share/vm/opto/node.cpp Wed Jan 27 09:02:51 2016 +0100 1.3 @@ -497,6 +497,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 @@ -625,6 +630,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 @@ -1320,6 +1330,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++) {