Tue, 11 Mar 2008 11:04:40 -0700
6623167: C2 crashed in StoreCMNode::Value
Summary: C2 crashed in StoreCMNode::Value because n->in(MemNode::OopStore) is 0.
Reviewed-by: rasbold, never
src/share/vm/opto/memnode.cpp | file | annotate | diff | comparison | revisions |
1.1 --- a/src/share/vm/opto/memnode.cpp Mon Mar 10 17:21:56 2008 -0700 1.2 +++ b/src/share/vm/opto/memnode.cpp Tue Mar 11 11:04:40 2008 -0700 1.3 @@ -1771,9 +1771,16 @@ 1.4 1.5 //------------------------------Value----------------------------------------- 1.6 const Type *StoreCMNode::Value( PhaseTransform *phase ) const { 1.7 + // Either input is TOP ==> the result is TOP 1.8 + const Type *t = phase->type( in(MemNode::Memory) ); 1.9 + if( t == Type::TOP ) return Type::TOP; 1.10 + t = phase->type( in(MemNode::Address) ); 1.11 + if( t == Type::TOP ) return Type::TOP; 1.12 + t = phase->type( in(MemNode::ValueIn) ); 1.13 + if( t == Type::TOP ) return Type::TOP; 1.14 // If extra input is TOP ==> the result is TOP 1.15 - const Type *t1 = phase->type( in(MemNode::OopStore) ); 1.16 - if( t1 == Type::TOP ) return Type::TOP; 1.17 + t = phase->type( in(MemNode::OopStore) ); 1.18 + if( t == Type::TOP ) return Type::TOP; 1.19 1.20 return StoreNode::Value( phase ); 1.21 }