Mercurial > hg > truffle
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++) { |