src/hotspot/share/opto/memnode.cpp
changeset 52224 4f2215a00ed1
parent 52093 bbc90467f354
child 52429 b64514ff68fd
equal deleted inserted replaced
52223:d0983f073c54 52224:4f2215a00ed1
   922     LoadNode* ld = clone()->as_Load();
   922     LoadNode* ld = clone()->as_Load();
   923     Node* addp = in(MemNode::Address)->clone();
   923     Node* addp = in(MemNode::Address)->clone();
   924     if (ac->as_ArrayCopy()->is_clonebasic()) {
   924     if (ac->as_ArrayCopy()->is_clonebasic()) {
   925       assert(ld_alloc != NULL, "need an alloc");
   925       assert(ld_alloc != NULL, "need an alloc");
   926       assert(addp->is_AddP(), "address must be addp");
   926       assert(addp->is_AddP(), "address must be addp");
   927       assert(addp->in(AddPNode::Base) == ac->in(ArrayCopyNode::Dest)->in(AddPNode::Base), "strange pattern");
   927       assert(ac->in(ArrayCopyNode::Dest)->is_AddP(), "dest must be an address");
   928       assert(addp->in(AddPNode::Address) == ac->in(ArrayCopyNode::Dest)->in(AddPNode::Address), "strange pattern");
   928       BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2();
       
   929       assert(bs->step_over_gc_barrier(addp->in(AddPNode::Base)) == bs->step_over_gc_barrier(ac->in(ArrayCopyNode::Dest)->in(AddPNode::Base)), "strange pattern");
       
   930       assert(bs->step_over_gc_barrier(addp->in(AddPNode::Address)) == bs->step_over_gc_barrier(ac->in(ArrayCopyNode::Dest)->in(AddPNode::Address)), "strange pattern");
   929       addp->set_req(AddPNode::Base, src->in(AddPNode::Base));
   931       addp->set_req(AddPNode::Base, src->in(AddPNode::Base));
   930       addp->set_req(AddPNode::Address, src->in(AddPNode::Address));
   932       addp->set_req(AddPNode::Address, src->in(AddPNode::Address));
   931     } else {
   933     } else {
   932       assert(ac->as_ArrayCopy()->is_arraycopy_validated() ||
   934       assert(ac->as_ArrayCopy()->is_arraycopy_validated() ||
   933              ac->as_ArrayCopy()->is_copyof_validated() ||
   935              ac->as_ArrayCopy()->is_copyof_validated() ||
  1079     // Load boxed value from result of valueOf() call is input parameter.
  1081     // Load boxed value from result of valueOf() call is input parameter.
  1080     if (this->is_Load() && ld_adr->is_AddP() &&
  1082     if (this->is_Load() && ld_adr->is_AddP() &&
  1081         (tp != NULL) && tp->is_ptr_to_boxed_value()) {
  1083         (tp != NULL) && tp->is_ptr_to_boxed_value()) {
  1082       intptr_t ignore = 0;
  1084       intptr_t ignore = 0;
  1083       Node* base = AddPNode::Ideal_base_and_offset(ld_adr, phase, ignore);
  1085       Node* base = AddPNode::Ideal_base_and_offset(ld_adr, phase, ignore);
       
  1086       BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2();
       
  1087       base = bs->step_over_gc_barrier(base);
  1084       if (base != NULL && base->is_Proj() &&
  1088       if (base != NULL && base->is_Proj() &&
  1085           base->as_Proj()->_con == TypeFunc::Parms &&
  1089           base->as_Proj()->_con == TypeFunc::Parms &&
  1086           base->in(0)->is_CallStaticJava() &&
  1090           base->in(0)->is_CallStaticJava() &&
  1087           base->in(0)->as_CallStaticJava()->is_boxing_method()) {
  1091           base->in(0)->as_CallStaticJava()->is_boxing_method()) {
  1088         return base->in(0)->in(TypeFunc::Parms);
  1092         return base->in(0)->in(TypeFunc::Parms);