754 if (un != NULL) { |
754 if (un != NULL) { |
755 result = un; |
755 result = un; |
756 } else { |
756 } else { |
757 break; |
757 break; |
758 } |
758 } |
|
759 } else if (result->Opcode() == Op_SCMemProj) { |
|
760 assert(result->in(0)->is_LoadStore(), "sanity"); |
|
761 const Type *at = phase->type(result->in(0)->in(MemNode::Address)); |
|
762 if (at != Type::TOP) { |
|
763 assert (at->isa_ptr() != NULL, "pointer type required."); |
|
764 int idx = C->get_alias_index(at->is_ptr()); |
|
765 assert(idx != alias_idx, "Object is not scalar replaceable if a LoadStore node access its field"); |
|
766 break; |
|
767 } |
|
768 result = result->in(0)->in(MemNode::Memory); |
759 } |
769 } |
760 } |
770 } |
761 if (result->is_Phi()) { |
771 if (result->is_Phi()) { |
762 PhiNode *mphi = result->as_Phi(); |
772 PhiNode *mphi = result->as_Phi(); |
763 assert(mphi->bottom_type() == Type::MEMORY, "memory phi required"); |
773 assert(mphi->bottom_type() == Type::MEMORY, "memory phi required"); |