hotspot/src/share/vm/opto/type.cpp
changeset 22239 a7ea670834f4
parent 21202 0356e40b1017
child 22799 83e58bac7980
child 22872 b6902ee5bc8d
equal deleted inserted replaced
22238:71131b418c03 22239:a7ea670834f4
  3810         // This must fall to bottom, not (int[-128..65535])[int+].
  3810         // This must fall to bottom, not (int[-128..65535])[int+].
  3811         instance_id = InstanceBot;
  3811         instance_id = InstanceBot;
  3812         tary = TypeAry::make(Type::BOTTOM, tary->_size, tary->_stable);
  3812         tary = TypeAry::make(Type::BOTTOM, tary->_size, tary->_stable);
  3813       }
  3813       }
  3814     } else // Non integral arrays.
  3814     } else // Non integral arrays.
  3815     // Must fall to bottom if exact klasses in upper lattice
  3815       // Must fall to bottom if exact klasses in upper lattice
  3816     // are not equal or super klass is exact.
  3816       // are not equal or super klass is exact.
  3817     if ( above_centerline(ptr) && klass() != tap->klass() &&
  3817       if ((above_centerline(ptr) || ptr == Constant) && klass() != tap->klass() &&
  3818          // meet with top[] and bottom[] are processed further down:
  3818           // meet with top[] and bottom[] are processed further down:
  3819          tap ->_klass != NULL  && this->_klass != NULL   &&
  3819           tap->_klass != NULL  && this->_klass != NULL   &&
  3820          // both are exact and not equal:
  3820           // both are exact and not equal:
  3821         ((tap ->_klass_is_exact && this->_klass_is_exact) ||
  3821           ((tap->_klass_is_exact && this->_klass_is_exact) ||
  3822          // 'tap'  is exact and super or unrelated:
  3822            // 'tap'  is exact and super or unrelated:
  3823          (tap ->_klass_is_exact && !tap->klass()->is_subtype_of(klass())) ||
  3823            (tap->_klass_is_exact && !tap->klass()->is_subtype_of(klass())) ||
  3824          // 'this' is exact and super or unrelated:
  3824            // 'this' is exact and super or unrelated:
  3825          (this->_klass_is_exact && !klass()->is_subtype_of(tap->klass())))) {
  3825            (this->_klass_is_exact && !klass()->is_subtype_of(tap->klass())))) {
  3826       tary = TypeAry::make(Type::BOTTOM, tary->_size, tary->_stable);
  3826       tary = TypeAry::make(Type::BOTTOM, tary->_size, tary->_stable);
  3827       return make(NotNull, NULL, tary, lazy_klass, false, off, InstanceBot);
  3827       return make(NotNull, NULL, tary, lazy_klass, false, off, InstanceBot);
  3828     }
  3828     }
  3829 
  3829 
  3830     bool xk = false;
  3830     bool xk = false;