6623167: C2 crashed in StoreCMNode::Value
authorkvn
Tue Mar 11 11:04:40 2008 -0700 (20 months ago)
changeset 43d821d920b465
parent 421216832af221
child 4452fed2ec0afb
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
--- a/src/share/vm/opto/memnode.cpp Mon Mar 10 17:21:56 2008 -0700
+++ b/src/share/vm/opto/memnode.cpp Tue Mar 11 11:04:40 2008 -0700
@@ -1771,9 +1771,16 @@ Node *StoreCMNode::Identity( PhaseTransf
//------------------------------Value-----------------------------------------
const Type *StoreCMNode::Value( PhaseTransform *phase ) const {
+ // Either input is TOP ==> the result is TOP
+ const Type *t = phase->type( in(MemNode::Memory) );
+ if( t == Type::TOP ) return Type::TOP;
+ t = phase->type( in(MemNode::Address) );
+ if( t == Type::TOP ) return Type::TOP;
+ t = phase->type( in(MemNode::ValueIn) );
+ if( t == Type::TOP ) return Type::TOP;
// If extra input is TOP ==> the result is TOP
- const Type *t1 = phase->type( in(MemNode::OopStore) );
- if( t1 == Type::TOP ) return Type::TOP;
+ t = phase->type( in(MemNode::OopStore) );
+ if( t == Type::TOP ) return Type::TOP;
return StoreNode::Value( phase );
}