# HG changeset patch # User kvn # Date 1252604184 25200 # Node ID 159d56b94894ee1ba45ed421d319020c788e5e52 # Parent 9a4e87ba1a904c5d06fe604ec08f0a8bc3512029 6880574: C2 assert in escape.cpp:445 on linux-amd64 Summary: Look through chained AddP nodes in get_addp_base(). Reviewed-by: jrose diff -r 9a4e87ba1a90 -r 159d56b94894 src/share/vm/opto/escape.cpp --- a/src/share/vm/opto/escape.cpp Wed Sep 09 16:28:03 2009 -0700 +++ b/src/share/vm/opto/escape.cpp Thu Sep 10 10:36:24 2009 -0700 @@ -439,6 +439,11 @@ Node *base = addp->in(AddPNode::Base)->uncast(); if (base->is_top()) { // The AddP case #3 and #6. 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 || base->Opcode() == Op_CastX2P || base->is_DecodeN() || (base->is_Mem() && base->bottom_type() == TypeRawPtr::NOTNULL) ||