< prev index next >

src/share/vm/opto/memnode.cpp

Print this page

        

*** 1014,1023 **** --- 1014,1024 ---- (ld_off >= st->in(0)->as_Allocate()->minimum_header_size())) { // return a zero value for the load's basic type // (This is one of the few places where a generic PhaseTransform // can create new nodes. Think of it as lazily manifesting // virtually pre-existing constants.) + assert(memory_type() != T_VALUETYPE, "should not be used for value types"); return phase->zerocon(memory_type()); } // A load from an initialization barrier can match a captured store. if (st->is_Proj() && st->in(0)->is_Initialize()) {
*** 2415,2434 **** // each of 'mem's uses (thus making the exactly-1-user-rule hold // true). while (st->is_Store() && st->outcnt() == 1 && st->Opcode() != Op_StoreCM) { // Looking at a dead closed cycle of memory? assert(st != st->in(MemNode::Memory), "dead loop in StoreNode::Ideal"); - // TODO re-enable assert - /* assert(Opcode() == st->Opcode() || st->Opcode() == Op_StoreVector || Opcode() == Op_StoreVector || phase->C->get_alias_index(adr_type()) == Compile::AliasIdxRaw || (Opcode() == Op_StoreL && st->Opcode() == Op_StoreI) || // expanded ClearArrayNode (is_mismatched_access() || st->as_Store()->is_mismatched_access()), "no mismatched stores, except on raw memory: %s %s", NodeClassNames[Opcode()], NodeClassNames[st->Opcode()]); - */ if (st->in(MemNode::Address)->eqv_uncast(address) && st->as_Store()->memory_size() <= this->memory_size()) { Node* use = st->raw_out(0); phase->igvn_rehash_node_delayed(use); if (can_reshape) { --- 2416,2432 ----
< prev index next >