hotspot/src/share/vm/opto/cfgnode.cpp
changeset 955 723d7b577fba
parent 781 e1baa9c8f16f
child 1399 9648dfd4ce09
equal deleted inserted replaced
954:740f5b9a923e 955:723d7b577fba
   711   assert(t_oop != NULL && t_oop->is_known_instance(), "expecting instance oopptr");
   711   assert(t_oop != NULL && t_oop->is_known_instance(), "expecting instance oopptr");
   712   const TypePtr *t = adr_type();
   712   const TypePtr *t = adr_type();
   713   assert(type() == Type::MEMORY &&
   713   assert(type() == Type::MEMORY &&
   714          (t == TypePtr::BOTTOM || t == TypeRawPtr::BOTTOM ||
   714          (t == TypePtr::BOTTOM || t == TypeRawPtr::BOTTOM ||
   715           t->isa_oopptr() && !t->is_oopptr()->is_known_instance() &&
   715           t->isa_oopptr() && !t->is_oopptr()->is_known_instance() &&
   716           t->is_oopptr()->cast_to_instance_id(t_oop->instance_id()) == t_oop),
   716           t->is_oopptr()->cast_to_exactness(true)
       
   717            ->is_oopptr()->cast_to_ptr_type(t_oop->ptr())
       
   718            ->is_oopptr()->cast_to_instance_id(t_oop->instance_id()) == t_oop),
   717          "bottom or raw memory required");
   719          "bottom or raw memory required");
   718 
   720 
   719   // Check if an appropriate node already exists.
   721   // Check if an appropriate node already exists.
   720   Node *region = in(0);
   722   Node *region = in(0);
   721   for (DUIterator_Fast kmax, k = region->fast_outs(kmax); k < kmax; k++) {
   723   for (DUIterator_Fast kmax, k = region->fast_outs(kmax); k < kmax; k++) {
  1087   for (uint i = 1, cnt = req(); i < cnt; ++i) {
  1089   for (uint i = 1, cnt = req(); i < cnt; ++i) {
  1088     Node* rc = r->in(i);
  1090     Node* rc = r->in(i);
  1089     if (rc == NULL || phase->type(rc) == Type::TOP)
  1091     if (rc == NULL || phase->type(rc) == Type::TOP)
  1090       continue;                 // ignore unreachable control path
  1092       continue;                 // ignore unreachable control path
  1091     Node* n = in(i);
  1093     Node* n = in(i);
       
  1094     if (n == NULL)
       
  1095       continue;
  1092     Node* un = n->uncast();
  1096     Node* un = n->uncast();
  1093     if (un == NULL || un == this || phase->type(un) == Type::TOP) {
  1097     if (un == NULL || un == this || phase->type(un) == Type::TOP) {
  1094       continue; // ignore if top, or in(i) and "this" are in a data cycle
  1098       continue; // ignore if top, or in(i) and "this" are in a data cycle
  1095     }
  1099     }
  1096     // Check for a unique uncasted input
  1100     // Check for a unique uncasted input