hotspot/src/share/vm/opto/memnode.cpp
changeset 955 723d7b577fba
parent 781 e1baa9c8f16f
child 961 7fb3b13d4205
equal deleted inserted replaced
954:740f5b9a923e 955:723d7b577fba
   133     PhiNode *mphi = result->as_Phi();
   133     PhiNode *mphi = result->as_Phi();
   134     assert(mphi->bottom_type() == Type::MEMORY, "memory phi required");
   134     assert(mphi->bottom_type() == Type::MEMORY, "memory phi required");
   135     const TypePtr *t = mphi->adr_type();
   135     const TypePtr *t = mphi->adr_type();
   136     if (t == TypePtr::BOTTOM || t == TypeRawPtr::BOTTOM ||
   136     if (t == TypePtr::BOTTOM || t == TypeRawPtr::BOTTOM ||
   137         t->isa_oopptr() && !t->is_oopptr()->is_known_instance() &&
   137         t->isa_oopptr() && !t->is_oopptr()->is_known_instance() &&
   138         t->is_oopptr()->cast_to_instance_id(t_oop->instance_id()) == t_oop) {
   138         t->is_oopptr()->cast_to_exactness(true)
       
   139          ->is_oopptr()->cast_to_ptr_type(t_oop->ptr())
       
   140          ->is_oopptr()->cast_to_instance_id(t_oop->instance_id()) == t_oop) {
   139       // clone the Phi with our address type
   141       // clone the Phi with our address type
   140       result = mphi->split_out_instance(t_adr, igvn);
   142       result = mphi->split_out_instance(t_adr, igvn);
   141     } else {
   143     } else {
   142       assert(phase->C->get_alias_index(t) == phase->C->get_alias_index(t_adr), "correct memory chain");
   144       assert(phase->C->get_alias_index(t) == phase->C->get_alias_index(t_adr), "correct memory chain");
   143     }
   145     }