< prev index next >

src/share/vm/opto/escape.cpp

Print this page

        

*** 2731,2740 **** --- 2731,2741 ---- Node* adr = NULL; if (mem->is_LoadStore()) { adr = mem->in(MemNode::Address); } else { assert(mem->Opcode() == Op_EncodeISOArray || + mem->Opcode() == Op_StrInflatedCopy || mem->Opcode() == Op_StrCompressedCopy, "sanity"); adr = mem->in(3); // Memory edge corresponds to destination array } const Type *at = igvn->type(adr); if (at != Type::TOP) {
*** 2745,2767 **** assert(false, "Object is not scalar replaceable if a LoadStore node accesses its field"); break; // In product mode return SCMemProj node } } result = mem->in(MemNode::Memory); - } else if (result->Opcode() == Op_StrInflatedCopy) { - Node* adr = result->in(3); // Memory edge corresponds to destination array - const Type *at = igvn->type(adr); - if (at != Type::TOP) { - assert(at->isa_ptr() != NULL, "pointer type required."); - int idx = C->get_alias_index(at->is_ptr()); - if (idx == alias_idx) { - // Assert in debug mode - assert(false, "Object is not scalar replaceable if a StrInflatedCopy node accesses its field"); - break; // In product mode return SCMemProj node - } - } - result = result->in(MemNode::Memory); } } if (result->is_Phi()) { PhiNode *mphi = result->as_Phi(); assert(mphi->bottom_type() == Type::MEMORY, "memory phi required"); --- 2746,2755 ----
*** 3192,3201 **** --- 3180,3190 ---- // we don't need to do anything, but the users must be pushed n = n->as_MemBar()->proj_out(TypeFunc::Memory); if (n == NULL) continue; } else if (n->Opcode() == Op_StrCompressedCopy || + n->Opcode() == Op_StrInflatedCopy || n->Opcode() == Op_EncodeISOArray) { // get the memory projection n = n->find_out_with(Op_SCMemProj); assert(n->Opcode() == Op_SCMemProj, "memory projection required"); } else {
< prev index next >