comparison src/share/vm/opto/connode.cpp @ 305:ab075d07f1ba

6736417: Fastdebug C2 crashes in StoreBNode::Ideal Summary: The result of step_through_mergemem() and remove_dead_region() is not checked in some cases. Reviewed-by: never
author kvn
date Wed, 27 Aug 2008 09:15:46 -0700
parents 9c2ecc2ffb12
children 36ccc817fca4
comparison
equal deleted inserted replaced
304:dc7f315e41f7 305:ab075d07f1ba
99 //------------------------------Ideal------------------------------------------ 99 //------------------------------Ideal------------------------------------------
100 // Return a node which is more "ideal" than the current node. 100 // Return a node which is more "ideal" than the current node.
101 // Move constants to the right. 101 // Move constants to the right.
102 Node *CMoveNode::Ideal(PhaseGVN *phase, bool can_reshape) { 102 Node *CMoveNode::Ideal(PhaseGVN *phase, bool can_reshape) {
103 if( in(0) && remove_dead_region(phase, can_reshape) ) return this; 103 if( in(0) && remove_dead_region(phase, can_reshape) ) return this;
104 // Don't bother trying to transform a dead node
105 if( in(0) && in(0)->is_top() ) return NULL;
104 assert( !phase->eqv(in(Condition), this) && 106 assert( !phase->eqv(in(Condition), this) &&
105 !phase->eqv(in(IfFalse), this) && 107 !phase->eqv(in(IfFalse), this) &&
106 !phase->eqv(in(IfTrue), this), "dead loop in CMoveNode::Ideal" ); 108 !phase->eqv(in(IfTrue), this), "dead loop in CMoveNode::Ideal" );
107 if( phase->type(in(Condition)) == Type::TOP ) 109 if( phase->type(in(Condition)) == Type::TOP )
108 return NULL; // return NULL when Condition is dead 110 return NULL; // return NULL when Condition is dead