diff src/share/vm/opto/escape.cpp @ 588:ef3b3df478b9

Merge
author trims
date Wed, 25 Feb 2009 22:55:54 -0800
parents 49a36a80b0c7
children 98cb887364d3
line wrap: on
line diff
--- a/src/share/vm/opto/escape.cpp	Wed Feb 18 18:20:02 2009 -0800
+++ b/src/share/vm/opto/escape.cpp	Wed Feb 25 22:55:54 2009 -0800
@@ -756,6 +756,16 @@
       } else {
         break;
       }
+    } else if (result->Opcode() == Op_SCMemProj) {
+      assert(result->in(0)->is_LoadStore(), "sanity");
+      const Type *at = phase->type(result->in(0)->in(MemNode::Address));
+      if (at != Type::TOP) {
+        assert (at->isa_ptr() != NULL, "pointer type required.");
+        int idx = C->get_alias_index(at->is_ptr());
+        assert(idx != alias_idx, "Object is not scalar replaceable if a LoadStore node access its field");
+        break;
+      }
+      result = result->in(0)->in(MemNode::Memory);
     }
   }
   if (result->is_Phi()) {