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