src/share/vm/opto/node.cpp

changeset 8476
94ec11846b18
parent 8068
c1091733abe6
child 8478
c42cb5db3601
     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++) {

mercurial