hotspot/src/share/vm/opto/memnode.cpp
changeset 6741 d4e6d10d7bdf
parent 6436 92ab86f565f8
child 6752 9a3b09fd5745
equal deleted inserted replaced
6740:2bc601284215 6741:d4e6d10d7bdf
   191       print_alias_types();
   191       print_alias_types();
   192       assert(consistent, "adr_check must match alias idx");
   192       assert(consistent, "adr_check must match alias idx");
   193     }
   193     }
   194   }
   194   }
   195 #endif
   195 #endif
   196   // TypeInstPtr::NOTNULL+any is an OOP with unknown offset - generally
   196   // TypeOopPtr::NOTNULL+any is an OOP with unknown offset - generally
   197   // means an array I have not precisely typed yet.  Do not do any
   197   // means an array I have not precisely typed yet.  Do not do any
   198   // alias stuff with it any time soon.
   198   // alias stuff with it any time soon.
   199   const TypeOopPtr *tinst = tp->isa_oopptr();
   199   const TypeOopPtr *toop = tp->isa_oopptr();
   200   if( tp->base() != Type::AnyPtr &&
   200   if( tp->base() != Type::AnyPtr &&
   201       !(tinst &&
   201       !(toop &&
   202         tinst->klass()->is_java_lang_Object() &&
   202         toop->klass() != NULL &&
   203         tinst->offset() == Type::OffsetBot) ) {
   203         toop->klass()->is_java_lang_Object() &&
       
   204         toop->offset() == Type::OffsetBot) ) {
   204     // compress paths and change unreachable cycles to TOP
   205     // compress paths and change unreachable cycles to TOP
   205     // If not, we can update the input infinitely along a MergeMem cycle
   206     // If not, we can update the input infinitely along a MergeMem cycle
   206     // Equivalent code in PhiNode::Ideal
   207     // Equivalent code in PhiNode::Ideal
   207     Node* m  = phase->transform(mmem);
   208     Node* m  = phase->transform(mmem);
   208     // If transformed to a MergeMem, get the desired slice
   209     // If transformed to a MergeMem, get the desired slice