Mercurial > hg > truffle
comparison src/share/vm/opto/memnode.cpp @ 14457:45467c53f178
Merge
author | kvn |
---|---|
date | Tue, 28 Jan 2014 12:28:17 -0800 |
parents | abec000618bf 5ec7dace41a6 |
children | bd2220947c1e 4ca6dc0799b6 |
comparison
equal
deleted
inserted
replaced
14456:abec000618bf | 14457:45467c53f178 |
---|---|
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 } |