Mercurial > hg > truffle
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) |