提交 c07c50fa 编写于 作者: K kvn

6880574: C2 assert in escape.cpp:445 on linux-amd64

Summary: Look through chained AddP nodes in get_addp_base().
Reviewed-by: jrose
上级 01b58dfa
...@@ -439,6 +439,11 @@ static Node* get_addp_base(Node *addp) { ...@@ -439,6 +439,11 @@ static Node* get_addp_base(Node *addp) {
Node *base = addp->in(AddPNode::Base)->uncast(); Node *base = addp->in(AddPNode::Base)->uncast();
if (base->is_top()) { // The AddP case #3 and #6. if (base->is_top()) { // The AddP case #3 and #6.
base = addp->in(AddPNode::Address)->uncast(); base = addp->in(AddPNode::Address)->uncast();
while (base->is_AddP()) {
// Case #6 (unsafe access) may have several chained AddP nodes.
assert(base->in(AddPNode::Base)->is_top(), "expected unsafe access address only");
base = base->in(AddPNode::Address)->uncast();
}
assert(base->Opcode() == Op_ConP || base->Opcode() == Op_ThreadLocal || assert(base->Opcode() == Op_ConP || base->Opcode() == Op_ThreadLocal ||
base->Opcode() == Op_CastX2P || base->is_DecodeN() || base->Opcode() == Op_CastX2P || base->is_DecodeN() ||
(base->is_Mem() && base->bottom_type() == TypeRawPtr::NOTNULL) || (base->is_Mem() && base->bottom_type() == TypeRawPtr::NOTNULL) ||
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册