Mercurial > hg > graal-compiler
diff src/share/vm/opto/macro.cpp @ 584:49a36a80b0c7
6802499: EA: assert(false,"unknown node on this path")
Summary: Add missing checks for SCMemProj node in Escape analysis code.
Reviewed-by: never
author | kvn |
---|---|
date | Thu, 19 Feb 2009 17:38:53 -0800 |
parents | 7fe62bb75bf4 |
children | 523ded093c31 |
line wrap: on
line diff
--- a/src/share/vm/opto/macro.cpp Wed Feb 18 13:53:42 2009 -0800 +++ b/src/share/vm/opto/macro.cpp Thu Feb 19 17:38:53 2009 -0800 @@ -250,6 +250,15 @@ assert(adr_idx == Compile::AliasIdxRaw, "address must match or be raw"); } mem = mem->in(MemNode::Memory); + } else if (mem->Opcode() == Op_SCMemProj) { + assert(mem->in(0)->is_LoadStore(), "sanity"); + const TypePtr* atype = mem->in(0)->in(MemNode::Address)->bottom_type()->is_ptr(); + int adr_idx = Compile::current()->get_alias_index(atype); + if (adr_idx == alias_idx) { + assert(false, "Object is not scalar replaceable if a LoadStore node access its field"); + return NULL; + } + mem = mem->in(0)->in(MemNode::Memory); } else { return mem; } @@ -329,8 +338,15 @@ return NULL; } values.at_put(j, val); + } else if (val->Opcode() == Op_SCMemProj) { + assert(val->in(0)->is_LoadStore(), "sanity"); + assert(false, "Object is not scalar replaceable if a LoadStore node access its field"); + return NULL; } else { +#ifdef ASSERT + val->dump(); assert(false, "unknown node on this path"); +#endif return NULL; // unknown node on this path } }