src/share/vm/opto/cfgnode.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6695810 Cdiff src/share/vm/opto/cfgnode.cpp

src/share/vm/opto/cfgnode.cpp

Print this page

        

*** 705,716 **** } //------------------------split_out_instance----------------------------------- // Split out an instance type from a bottom phi. PhiNode* PhiNode::split_out_instance(const TypePtr* at, PhaseIterGVN *igvn) const { ! assert(type() == Type::MEMORY && (adr_type() == TypePtr::BOTTOM || ! adr_type() == TypeRawPtr::BOTTOM) , "bottom or raw memory required"); // Check if an appropriate node already exists. Node *region = in(0); for (DUIterator_Fast kmax, k = region->fast_outs(kmax); k < kmax; k++) { Node* use = region->fast_out(k); --- 705,722 ---- } //------------------------split_out_instance----------------------------------- // Split out an instance type from a bottom phi. PhiNode* PhiNode::split_out_instance(const TypePtr* at, PhaseIterGVN *igvn) const { ! const TypeOopPtr *t_oop = at->isa_oopptr(); ! assert(t_oop != NULL && t_oop->is_instance(), "expecting instance oopptr"); ! const TypePtr *t = adr_type(); ! assert(type() == Type::MEMORY && ! (t == TypePtr::BOTTOM || t == TypeRawPtr::BOTTOM || ! t->isa_oopptr() && !t->is_oopptr()->is_instance() && ! t->is_oopptr()->cast_to_instance(t_oop->instance_id()) == t_oop), ! "bottom or raw memory required"); // Check if an appropriate node already exists. Node *region = in(0); for (DUIterator_Fast kmax, k = region->fast_outs(kmax); k < kmax; k++) { Node* use = region->fast_out(k);
*** 1340,1350 **** uint i; for( i = 1; i < phi->req()-1; i++ ) { Node *n = phi->in(i); if( !n ) return NULL; if( phase->type(n) == Type::TOP ) return NULL; ! if( n->Opcode() == Op_ConP ) break; } if( i >= phi->req() ) // Only split for constants return NULL; --- 1346,1356 ---- uint i; for( i = 1; i < phi->req()-1; i++ ) { Node *n = phi->in(i); if( !n ) return NULL; if( phase->type(n) == Type::TOP ) return NULL; ! if( n->Opcode() == Op_ConP || n->Opcode() == Op_ConN ) break; } if( i >= phi->req() ) // Only split for constants return NULL;
src/share/vm/opto/cfgnode.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File