提交 b9c2450d 编写于 作者: K kvn

6879362: assert(!klass_is_exact(),"only non-exact klass")

Summary: Do nothing for AddP node which has type not related to the type of allocated object.
Reviewed-by: never
上级 fe4cf5d6
...@@ -524,12 +524,15 @@ bool ConnectionGraph::split_AddP(Node *addp, Node *base, PhaseGVN *igvn) { ...@@ -524,12 +524,15 @@ bool ConnectionGraph::split_AddP(Node *addp, Node *base, PhaseGVN *igvn) {
// inlining) which was not eliminated during parsing since the exactness // inlining) which was not eliminated during parsing since the exactness
// of the allocation type was not propagated to the subclass type check. // of the allocation type was not propagated to the subclass type check.
// //
// Or the type 't' could be not related to 'base_t' at all.
// It could happened when CHA type is different from MDO type on a dead path
// (for example, from instanceof check) which is not collapsed during parsing.
//
// Do nothing for such AddP node and don't process its users since // Do nothing for such AddP node and don't process its users since
// this code branch will go away. // this code branch will go away.
// //
if (!t->is_known_instance() && if (!t->is_known_instance() &&
!t->klass()->equals(base_t->klass()) && !base_t->klass()->is_subtype_of(t->klass())) {
t->klass()->is_subtype_of(base_t->klass())) {
return false; // bail out return false; // bail out
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册