src/hotspot/share/opto/node.cpp
changeset 49487 bde392011cd8
parent 47216 71c04702a3d5
child 49908 22eb3e22f245
equal deleted inserted replaced
49486:a3f1db30ab85 49487:bde392011cd8
   502   // If the cloned node is a range check dependent CastII, add it to the list.
   502   // If the cloned node is a range check dependent CastII, add it to the list.
   503   CastIINode* cast = n->isa_CastII();
   503   CastIINode* cast = n->isa_CastII();
   504   if (cast != NULL && cast->has_range_check()) {
   504   if (cast != NULL && cast->has_range_check()) {
   505     C->add_range_check_cast(cast);
   505     C->add_range_check_cast(cast);
   506   }
   506   }
       
   507   if (n->Opcode() == Op_Opaque4) {
       
   508     C->add_opaque4_node(n);
       
   509   }
   507 
   510 
   508   n->set_idx(C->next_unique()); // Get new unique index as well
   511   n->set_idx(C->next_unique()); // Get new unique index as well
   509   debug_only( n->verify_construction() );
   512   debug_only( n->verify_construction() );
   510   NOT_PRODUCT(nodes_created++);
   513   NOT_PRODUCT(nodes_created++);
   511   // Do not patch over the debug_idx of a clone, because it makes it
   514   // Do not patch over the debug_idx of a clone, because it makes it
   609     compile->remove_expensive_node(this);
   612     compile->remove_expensive_node(this);
   610   }
   613   }
   611   CastIINode* cast = isa_CastII();
   614   CastIINode* cast = isa_CastII();
   612   if (cast != NULL && cast->has_range_check()) {
   615   if (cast != NULL && cast->has_range_check()) {
   613     compile->remove_range_check_cast(cast);
   616     compile->remove_range_check_cast(cast);
       
   617   }
       
   618   if (Opcode() == Op_Opaque4) {
       
   619     compile->remove_opaque4_node(this);
   614   }
   620   }
   615 
   621 
   616   if (is_SafePoint()) {
   622   if (is_SafePoint()) {
   617     as_SafePoint()->delete_replaced_nodes();
   623     as_SafePoint()->delete_replaced_nodes();
   618   }
   624   }
  1350       }
  1356       }
  1351       CastIINode* cast = dead->isa_CastII();
  1357       CastIINode* cast = dead->isa_CastII();
  1352       if (cast != NULL && cast->has_range_check()) {
  1358       if (cast != NULL && cast->has_range_check()) {
  1353         igvn->C->remove_range_check_cast(cast);
  1359         igvn->C->remove_range_check_cast(cast);
  1354       }
  1360       }
       
  1361       if (dead->Opcode() == Op_Opaque4) {
       
  1362         igvn->C->remove_range_check_cast(dead);
       
  1363       }
  1355       igvn->C->record_dead_node(dead->_idx);
  1364       igvn->C->record_dead_node(dead->_idx);
  1356       // Kill all inputs to the dead guy
  1365       // Kill all inputs to the dead guy
  1357       for (uint i=0; i < dead->req(); i++) {
  1366       for (uint i=0; i < dead->req(); i++) {
  1358         Node *n = dead->in(i);      // Get input to dead guy
  1367         Node *n = dead->in(i);      // Get input to dead guy
  1359         if (n != NULL && !n->is_top()) { // Input is valid?
  1368         if (n != NULL && !n->is_top()) { // Input is valid?