提交 fcf83014 编写于 作者: K kvn

6980978: assert(mt == t->xmeet(this)) failed: meet not commutative

Summary: Fix code in TypeAryPtr::xmeet() for constant array.
Reviewed-by: never
上级 1d0fc71f
...@@ -3369,7 +3369,7 @@ const Type *TypeAryPtr::xmeet( const Type *t ) const { ...@@ -3369,7 +3369,7 @@ const Type *TypeAryPtr::xmeet( const Type *t ) const {
tary = TypeAry::make(Type::BOTTOM, tary->_size); tary = TypeAry::make(Type::BOTTOM, tary->_size);
} }
} }
bool xk; bool xk = false;
switch (tap->ptr()) { switch (tap->ptr()) {
case AnyNull: case AnyNull:
case TopPTR: case TopPTR:
...@@ -3391,9 +3391,10 @@ const Type *TypeAryPtr::xmeet( const Type *t ) const { ...@@ -3391,9 +3391,10 @@ const Type *TypeAryPtr::xmeet( const Type *t ) const {
o = tap->const_oop(); o = tap->const_oop();
xk = true; xk = true;
} else { } else {
xk = this->_klass_is_exact; // Only precise for identical arrays
xk = this->_klass_is_exact && (klass() == tap->klass());
} }
return TypeAryPtr::make( ptr, o, tary, tap->_klass, xk, off, instance_id ); return TypeAryPtr::make( ptr, o, tary, lazy_klass, xk, off, instance_id );
} }
case NotNull: case NotNull:
case BotPTR: case BotPTR:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册