Mercurial > hg > truffle
comparison src/share/vm/opto/memnode.cpp @ 4124:f745b2be3737
7117282: assert(base == NULL || t_adr->isa_rawptr() || !phase->type(base)
Summary: Delay memory node transformation until the memory is processed.
Reviewed-by: iveresov, never
author | kvn |
---|---|
date | Fri, 02 Dec 2011 21:37:19 -0800 |
parents | 1bd45abaa507 |
children | 069ab3f976d3 |
comparison
equal
deleted
inserted
replaced
4123:97825a4f7369 | 4124:f745b2be3737 |
---|---|
262 } | 262 } |
263 // Ignore if memory is dead, or self-loop | 263 // Ignore if memory is dead, or self-loop |
264 Node *mem = in(MemNode::Memory); | 264 Node *mem = in(MemNode::Memory); |
265 if( phase->type( mem ) == Type::TOP ) return NodeSentinel; // caller will return NULL | 265 if( phase->type( mem ) == Type::TOP ) return NodeSentinel; // caller will return NULL |
266 assert( mem != this, "dead loop in MemNode::Ideal" ); | 266 assert( mem != this, "dead loop in MemNode::Ideal" ); |
267 | |
268 if (can_reshape && igvn != NULL && igvn->_worklist.member(mem)) { | |
269 // This memory slice may be dead. | |
270 // Delay this mem node transformation until the memory is processed. | |
271 phase->is_IterGVN()->_worklist.push(this); | |
272 return NodeSentinel; // caller will return NULL | |
273 } | |
267 | 274 |
268 Node *address = in(MemNode::Address); | 275 Node *address = in(MemNode::Address); |
269 const Type *t_adr = phase->type( address ); | 276 const Type *t_adr = phase->type( address ); |
270 if( t_adr == Type::TOP ) return NodeSentinel; // caller will return NULL | 277 if( t_adr == Type::TOP ) return NodeSentinel; // caller will return NULL |
271 | 278 |