equal
deleted
inserted
replaced
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 } |