< prev index next >

src/share/vm/opto/escape.cpp

Print this page

        

@@ -2731,10 +2731,11 @@
       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,23 +2746,10 @@
           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");

@@ -3192,10 +3180,11 @@
       // 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 >