hotspot/src/share/vm/opto/escape.cpp
changeset 3804 45b953240545
parent 3283 c8b1b0aecdfe
child 3907 2a567f035d5c
equal deleted inserted replaced
3803:a7d7c2525f61 3804:45b953240545
   437   //       AddP  ( base == address )
   437   //       AddP  ( base == address )
   438   //
   438   //
   439   Node *base = addp->in(AddPNode::Base)->uncast();
   439   Node *base = addp->in(AddPNode::Base)->uncast();
   440   if (base->is_top()) { // The AddP case #3 and #6.
   440   if (base->is_top()) { // The AddP case #3 and #6.
   441     base = addp->in(AddPNode::Address)->uncast();
   441     base = addp->in(AddPNode::Address)->uncast();
       
   442     while (base->is_AddP()) {
       
   443       // Case #6 (unsafe access) may have several chained AddP nodes.
       
   444       assert(base->in(AddPNode::Base)->is_top(), "expected unsafe access address only");
       
   445       base = base->in(AddPNode::Address)->uncast();
       
   446     }
   442     assert(base->Opcode() == Op_ConP || base->Opcode() == Op_ThreadLocal ||
   447     assert(base->Opcode() == Op_ConP || base->Opcode() == Op_ThreadLocal ||
   443            base->Opcode() == Op_CastX2P || base->is_DecodeN() ||
   448            base->Opcode() == Op_CastX2P || base->is_DecodeN() ||
   444            (base->is_Mem() && base->bottom_type() == TypeRawPtr::NOTNULL) ||
   449            (base->is_Mem() && base->bottom_type() == TypeRawPtr::NOTNULL) ||
   445            (base->is_Proj() && base->in(0)->is_Allocate()), "sanity");
   450            (base->is_Proj() && base->in(0)->is_Allocate()), "sanity");
   446   }
   451   }