mirror of
https://github.com/openjdk/jdk.git
synced 2026-05-19 18:07:49 +00:00
6589823: Error: meet not symmetric
Arrays pointers meet must fall to bottom if exact array klasses in upper lattice are not equal or super klass is exact. Reviewed-by: never
This commit is contained in:
parent
53d99aff1b
commit
8f5e126d82
@ -3386,7 +3386,22 @@ const Type *TypeAryPtr::xmeet( const Type *t ) const {
|
||||
instance_id = InstanceBot;
|
||||
tary = TypeAry::make(Type::BOTTOM, tary->_size);
|
||||
}
|
||||
} else // Non integral arrays.
|
||||
// Must fall to bottom if exact klasses in upper lattice
|
||||
// are not equal or super klass is exact.
|
||||
if ( above_centerline(ptr) && klass() != tap->klass() &&
|
||||
// meet with top[] and bottom[] are processed further down:
|
||||
tap ->_klass != NULL && this->_klass != NULL &&
|
||||
// both are exact and not equal:
|
||||
((tap ->_klass_is_exact && this->_klass_is_exact) ||
|
||||
// 'tap' is exact and super or unrelated:
|
||||
(tap ->_klass_is_exact && !tap->klass()->is_subtype_of(klass())) ||
|
||||
// 'this' is exact and super or unrelated:
|
||||
(this->_klass_is_exact && !klass()->is_subtype_of(tap->klass())))) {
|
||||
tary = TypeAry::make(Type::BOTTOM, tary->_size);
|
||||
return make( NotNull, NULL, tary, lazy_klass, false, off, InstanceBot );
|
||||
}
|
||||
|
||||
bool xk = false;
|
||||
switch (tap->ptr()) {
|
||||
case AnyNull:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user