diff src/share/vm/opto/node.cpp @ 23974:f13e777eb255

Merge with jdk8u111-b14
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Wed, 16 Nov 2016 12:32:54 -0800
parents b5f3a471e646 a96cf90239c6
children
line wrap: on
line diff
--- a/src/share/vm/opto/node.cpp	Wed Nov 09 14:41:57 2016 -0800
+++ b/src/share/vm/opto/node.cpp	Wed Nov 16 12:32:54 2016 -0800
@@ -529,6 +529,11 @@
     C->add_macro_node(n);
   if (is_expensive())
     C->add_expensive_node(n);
+  // If the cloned node is a range check dependent CastII, add it to the list.
+  CastIINode* cast = n->isa_CastII();
+  if (cast != NULL && cast->has_range_check()) {
+    C->add_range_check_cast(cast);
+  }
 
   n->set_idx(C->next_unique()); // Get new unique index as well
   debug_only( n->verify_construction() );
@@ -657,6 +662,11 @@
   if (is_expensive()) {
     compile->remove_expensive_node(this);
   }
+  CastIINode* cast = isa_CastII();
+  if (cast != NULL && cast->has_range_check()) {
+    compile->remove_range_check_cast(cast);
+  }
+
   if (is_SafePoint()) {
     as_SafePoint()->delete_replaced_nodes();
   }
@@ -1352,6 +1362,10 @@
       if (dead->is_expensive()) {
         igvn->C->remove_expensive_node(dead);
       }
+      CastIINode* cast = dead->isa_CastII();
+      if (cast != NULL && cast->has_range_check()) {
+        igvn->C->remove_range_check_cast(cast);
+      }
       igvn->C->record_dead_node(dead->_idx);
       // Kill all inputs to the dead guy
       for (uint i=0; i < dead->req(); i++) {