comparison src/share/vm/opto/memnode.cpp @ 420:a1980da045cc

6462850: generate biased locking code in C2 ideal graph Summary: Inline biased locking code in C2 ideal graph during macro nodes expansion Reviewed-by: never
author kvn
date Fri, 07 Nov 2008 09:29:38 -0800
parents 8261ee795323
children 82a980778b92 041fe019d769
comparison
equal deleted inserted replaced
419:0bf25c4807f9 420:a1980da045cc
224 assert( mem != this, "dead loop in MemNode::Ideal" ); 224 assert( mem != this, "dead loop in MemNode::Ideal" );
225 225
226 Node *address = in(MemNode::Address); 226 Node *address = in(MemNode::Address);
227 const Type *t_adr = phase->type( address ); 227 const Type *t_adr = phase->type( address );
228 if( t_adr == Type::TOP ) return NodeSentinel; // caller will return NULL 228 if( t_adr == Type::TOP ) return NodeSentinel; // caller will return NULL
229
230 PhaseIterGVN *igvn = phase->is_IterGVN();
231 if( can_reshape && igvn != NULL && igvn->_worklist.member(address) ) {
232 // The address's base and type may change when the address is processed.
233 // Delay this mem node transformation until the address is processed.
234 phase->is_IterGVN()->_worklist.push(this);
235 return NodeSentinel; // caller will return NULL
236 }
229 237
230 // Avoid independent memory operations 238 // Avoid independent memory operations
231 Node* old_mem = mem; 239 Node* old_mem = mem;
232 240
233 // The code which unhooks non-raw memories from complete (macro-expanded) 241 // The code which unhooks non-raw memories from complete (macro-expanded)