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; |