equal
deleted
inserted
replaced
655 "must stay in the original alias category"); |
655 "must stay in the original alias category"); |
656 // The type of the address must be contained in the adr_type, |
656 // The type of the address must be contained in the adr_type, |
657 // disregarding "null"-ness. |
657 // disregarding "null"-ness. |
658 // (We make an exception for TypeRawPtr::BOTTOM, which is a bit bucket.) |
658 // (We make an exception for TypeRawPtr::BOTTOM, which is a bit bucket.) |
659 const TypePtr* tp_notnull = tp->join(TypePtr::NOTNULL)->is_ptr(); |
659 const TypePtr* tp_notnull = tp->join(TypePtr::NOTNULL)->is_ptr(); |
660 assert(cross_check->meet(tp_notnull) == cross_check, |
660 assert(cross_check->meet(tp_notnull) == cross_check->remove_speculative(), |
661 "real address must not escape from expected memory type"); |
661 "real address must not escape from expected memory type"); |
662 } |
662 } |
663 #endif |
663 #endif |
664 return tp; |
664 return tp; |
665 } |
665 } |
1683 && (_type->isa_vect() == NULL) |
1683 && (_type->isa_vect() == NULL) |
1684 && Opcode() != Op_LoadKlass && Opcode() != Op_LoadNKlass) { |
1684 && Opcode() != Op_LoadKlass && Opcode() != Op_LoadNKlass) { |
1685 // t might actually be lower than _type, if _type is a unique |
1685 // t might actually be lower than _type, if _type is a unique |
1686 // concrete subclass of abstract class t. |
1686 // concrete subclass of abstract class t. |
1687 if (off_beyond_header) { // is the offset beyond the header? |
1687 if (off_beyond_header) { // is the offset beyond the header? |
1688 const Type* jt = t->join(_type); |
1688 const Type* jt = t->join_speculative(_type); |
1689 // In any case, do not allow the join, per se, to empty out the type. |
1689 // In any case, do not allow the join, per se, to empty out the type. |
1690 if (jt->empty() && !t->empty()) { |
1690 if (jt->empty() && !t->empty()) { |
1691 // This can happen if a interface-typed array narrows to a class type. |
1691 // This can happen if a interface-typed array narrows to a class type. |
1692 jt = _type; |
1692 jt = _type; |
1693 } |
1693 } |