comparison src/share/vm/opto/memnode.cpp @ 1826:56601ef83436

6916062: assert(_inserts <= _insert_limit,"hash table overflow") in NodeHash::hash_insert Summary: Missing check for not empty worklist when puting memory node back on worklist and expecting address type update. Reviewed-by: never
author kvn
date Thu, 30 Sep 2010 18:31:45 -0700
parents 5867d89c129b
children f95d63e2154a
comparison
equal deleted inserted replaced
1825:80c9354976b0 1826:56601ef83436
254 Node *address = in(MemNode::Address); 254 Node *address = in(MemNode::Address);
255 const Type *t_adr = phase->type( address ); 255 const Type *t_adr = phase->type( address );
256 if( t_adr == Type::TOP ) return NodeSentinel; // caller will return NULL 256 if( t_adr == Type::TOP ) return NodeSentinel; // caller will return NULL
257 257
258 if( can_reshape && igvn != NULL && 258 if( can_reshape && igvn != NULL &&
259 (igvn->_worklist.member(address) || phase->type(address) != adr_type()) ) { 259 (igvn->_worklist.member(address) ||
260 igvn->_worklist.size() > 0 && (phase->type(address) != adr_type())) ) {
260 // The address's base and type may change when the address is processed. 261 // The address's base and type may change when the address is processed.
261 // Delay this mem node transformation until the address is processed. 262 // Delay this mem node transformation until the address is processed.
262 phase->is_IterGVN()->_worklist.push(this); 263 phase->is_IterGVN()->_worklist.push(this);
263 return NodeSentinel; // caller will return NULL 264 return NodeSentinel; // caller will return NULL
264 } 265 }