2483 mem->Opcode() != Op_StoreCM) { |
2483 mem->Opcode() != Op_StoreCM) { |
2484 // Looking at a dead closed cycle of memory? |
2484 // Looking at a dead closed cycle of memory? |
2485 assert(mem != mem->in(MemNode::Memory), "dead loop in StoreNode::Ideal"); |
2485 assert(mem != mem->in(MemNode::Memory), "dead loop in StoreNode::Ideal"); |
2486 |
2486 |
2487 assert(Opcode() == mem->Opcode() || |
2487 assert(Opcode() == mem->Opcode() || |
2488 phase->C->get_alias_index(adr_type()) == Compile::AliasIdxRaw, |
2488 phase->C->get_alias_index(adr_type()) == Compile::AliasIdxRaw || |
|
2489 (is_mismatched_access() || mem->as_Store()->is_mismatched_access()), |
2489 "no mismatched stores, except on raw memory"); |
2490 "no mismatched stores, except on raw memory"); |
2490 |
2491 |
2491 if (mem->outcnt() == 1 && // check for intervening uses |
2492 if (mem->outcnt() == 1 && // check for intervening uses |
2492 mem->as_Store()->memory_size() <= this->memory_size()) { |
2493 mem->as_Store()->memory_size() <= this->memory_size()) { |
2493 // If anybody other than 'this' uses 'mem', we cannot fold 'mem' away. |
2494 // If anybody other than 'this' uses 'mem', we cannot fold 'mem' away. |