hotspot/src/share/vm/opto/escape.cpp
changeset 594 9f4474e5dbaf
parent 590 2954744d7bba
child 767 64fb1fd7186d
child 670 ddf3e9583f2f
equal deleted inserted replaced
593:803947e176bd 594:9f4474e5dbaf
   426   //
   426   //
   427   Node *base = addp->in(AddPNode::Base)->uncast();
   427   Node *base = addp->in(AddPNode::Base)->uncast();
   428   if (base->is_top()) { // The AddP case #3 and #6.
   428   if (base->is_top()) { // The AddP case #3 and #6.
   429     base = addp->in(AddPNode::Address)->uncast();
   429     base = addp->in(AddPNode::Address)->uncast();
   430     assert(base->Opcode() == Op_ConP || base->Opcode() == Op_ThreadLocal ||
   430     assert(base->Opcode() == Op_ConP || base->Opcode() == Op_ThreadLocal ||
   431            base->Opcode() == Op_CastX2P || base->Opcode() == Op_DecodeN ||
   431            base->Opcode() == Op_CastX2P || base->is_DecodeN() ||
   432            (base->is_Mem() && base->bottom_type() == TypeRawPtr::NOTNULL) ||
   432            (base->is_Mem() && base->bottom_type() == TypeRawPtr::NOTNULL) ||
   433            (base->is_Proj() && base->in(0)->is_Allocate()), "sanity");
   433            (base->is_Proj() && base->in(0)->is_Allocate()), "sanity");
   434   }
   434   }
   435   return base;
   435   return base;
   436 }
   436 }
   941       Node *base = get_map(elem);  // CheckCastPP node
   941       Node *base = get_map(elem);  // CheckCastPP node
   942       split_AddP(n, base, igvn);
   942       split_AddP(n, base, igvn);
   943       tinst = igvn->type(base)->isa_oopptr();
   943       tinst = igvn->type(base)->isa_oopptr();
   944     } else if (n->is_Phi() ||
   944     } else if (n->is_Phi() ||
   945                n->is_CheckCastPP() ||
   945                n->is_CheckCastPP() ||
   946                n->Opcode() == Op_EncodeP ||
   946                n->is_EncodeP() ||
   947                n->Opcode() == Op_DecodeN ||
   947                n->is_DecodeN() ||
   948                (n->is_ConstraintCast() && n->Opcode() == Op_CastPP)) {
   948                (n->is_ConstraintCast() && n->Opcode() == Op_CastPP)) {
   949       if (visited.test_set(n->_idx)) {
   949       if (visited.test_set(n->_idx)) {
   950         assert(n->is_Phi(), "loops only through Phi's");
   950         assert(n->is_Phi(), "loops only through Phi's");
   951         continue;  // already processed
   951         continue;  // already processed
   952       }
   952       }
  1014           alloc_worklist.append_if_missing(addp2);
  1014           alloc_worklist.append_if_missing(addp2);
  1015         }
  1015         }
  1016         alloc_worklist.append_if_missing(use);
  1016         alloc_worklist.append_if_missing(use);
  1017       } else if (use->is_Phi() ||
  1017       } else if (use->is_Phi() ||
  1018                  use->is_CheckCastPP() ||
  1018                  use->is_CheckCastPP() ||
  1019                  use->Opcode() == Op_EncodeP ||
  1019                  use->is_EncodeP() ||
  1020                  use->Opcode() == Op_DecodeN ||
  1020                  use->is_DecodeN() ||
  1021                  (use->is_ConstraintCast() && use->Opcode() == Op_CastPP)) {
  1021                  (use->is_ConstraintCast() && use->Opcode() == Op_CastPP)) {
  1022         alloc_worklist.append_if_missing(use);
  1022         alloc_worklist.append_if_missing(use);
  1023       }
  1023       }
  1024     }
  1024     }
  1025 
  1025