equal
deleted
inserted
replaced
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 } |