src/share/vm/opto/node.cpp

changeset 8478
c42cb5db3601
parent 8196
7c5babab479b
parent 8476
94ec11846b18
child 8504
a96cf90239c6
     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++) {

mercurial