comparison src/share/vm/opto/cfgnode.cpp @ 223:1dd146f17531

6716441: error in meet with +DoEscapeAnalysis Summary: Set instance_id to InstanceBot for InstPtr->meet(AryPtr) when types are not related. Reviewed-by: jrose, never
author kvn
date Thu, 26 Jun 2008 13:34:00 -0700
parents 1e026f8da827
children 9c2ecc2ffb12
comparison
equal deleted inserted replaced
222:2a1a77d3458f 223:1dd146f17531
706 706
707 //------------------------split_out_instance----------------------------------- 707 //------------------------split_out_instance-----------------------------------
708 // Split out an instance type from a bottom phi. 708 // Split out an instance type from a bottom phi.
709 PhiNode* PhiNode::split_out_instance(const TypePtr* at, PhaseIterGVN *igvn) const { 709 PhiNode* PhiNode::split_out_instance(const TypePtr* at, PhaseIterGVN *igvn) const {
710 const TypeOopPtr *t_oop = at->isa_oopptr(); 710 const TypeOopPtr *t_oop = at->isa_oopptr();
711 assert(t_oop != NULL && t_oop->is_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_instance() && 715 t->isa_oopptr() && !t->is_oopptr()->is_known_instance() &&
716 t->is_oopptr()->cast_to_instance(t_oop->instance_id()) == t_oop), 716 t->is_oopptr()->cast_to_instance_id(t_oop->instance_id()) == t_oop),
717 "bottom or raw memory required"); 717 "bottom or raw memory required");
718 718
719 // Check if an appropriate node already exists. 719 // Check if an appropriate node already exists.
720 Node *region = in(0); 720 Node *region = in(0);
721 for (DUIterator_Fast kmax, k = region->fast_outs(kmax); k < kmax; k++) { 721 for (DUIterator_Fast kmax, k = region->fast_outs(kmax); k < kmax; k++) {