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