hotspot/src/share/vm/opto/memnode.cpp
changeset 22873 74aaad871363
parent 22872 b6902ee5bc8d
parent 22799 83e58bac7980
child 23210 3dd7a99b8173
equal deleted inserted replaced
22872:b6902ee5bc8d 22873:74aaad871363
   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         }