comparison src/share/vm/opto/memnode.cpp @ 3255:5d046bf49ce7

Merge
author johnc
date Thu, 14 Apr 2011 13:45:41 -0700
parents 92add02409c9
children 286c498ae0d4
comparison
equal deleted inserted replaced
2468:6c97c830fb6f 3255:5d046bf49ce7
2157 if (p) return (p == NodeSentinel) ? NULL : p; 2157 if (p) return (p == NodeSentinel) ? NULL : p;
2158 2158
2159 Node* mem = in(MemNode::Memory); 2159 Node* mem = in(MemNode::Memory);
2160 Node* address = in(MemNode::Address); 2160 Node* address = in(MemNode::Address);
2161 2161
2162 // Back-to-back stores to same address? Fold em up. 2162 // Back-to-back stores to same address? Fold em up. Generally
2163 // Generally unsafe if I have intervening uses... 2163 // unsafe if I have intervening uses... Also disallowed for StoreCM
2164 if (mem->is_Store() && phase->eqv_uncast(mem->in(MemNode::Address), address)) { 2164 // since they must follow each StoreP operation. Redundant StoreCMs
2165 // are eliminated just before matching in final_graph_reshape.
2166 if (mem->is_Store() && phase->eqv_uncast(mem->in(MemNode::Address), address) &&
2167 mem->Opcode() != Op_StoreCM) {
2165 // Looking at a dead closed cycle of memory? 2168 // Looking at a dead closed cycle of memory?
2166 assert(mem != mem->in(MemNode::Memory), "dead loop in StoreNode::Ideal"); 2169 assert(mem != mem->in(MemNode::Memory), "dead loop in StoreNode::Ideal");
2167 2170
2168 assert(Opcode() == mem->Opcode() || 2171 assert(Opcode() == mem->Opcode() ||
2169 phase->C->get_alias_index(adr_type()) == Compile::AliasIdxRaw, 2172 phase->C->get_alias_index(adr_type()) == Compile::AliasIdxRaw,