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