# HG changeset patch # User Lukas Stadler # Date 1359642211 -3600 # Node ID 3a8b3b03ffa0c50b21a7d8054131351c355b89ca # Parent 17b6a63fe7c253c1da67834611aa184986f6eddf cleanup and assertion for PEA fix in 17b6a63fe7c2 diff -r 17b6a63fe7c2 -r 3a8b3b03ffa0 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/DebugInfoBuilder.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/DebugInfoBuilder.java Thu Jan 31 11:32:14 2013 +0100 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/DebugInfoBuilder.java Thu Jan 31 15:23:31 2013 +0100 @@ -148,6 +148,7 @@ throw new GraalInternalError("no mapping found for virtual object %s", obj); } if (state instanceof MaterializedObjectState) { + assert !(((MaterializedObjectState) state).materializedValue() instanceof VirtualObjectNode); return toValue(((MaterializedObjectState) state).materializedValue()); } else { assert obj.entryCount() == 0 || state instanceof VirtualObjectState || obj instanceof BoxedVirtualObjectNode; diff -r 17b6a63fe7c2 -r 3a8b3b03ffa0 graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/MaterializeObjectNode.java --- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/MaterializeObjectNode.java Thu Jan 31 11:32:14 2013 +0100 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/MaterializeObjectNode.java Thu Jan 31 15:23:31 2013 +0100 @@ -54,10 +54,11 @@ return ConstantNode.forInt(values.size(), graph()); } - @Override - public void lower(LoweringTool tool) { - StructuredGraph graph = (StructuredGraph) graph(); - + /** + * @return true if the object that will be created is without locks and has only entries that + * are {@link Constant#defaultForKind(Kind)}, false otherwise. + */ + public boolean isDefault() { boolean defaultEntries = true; if (lockCount > 0) { defaultEntries = false; @@ -69,6 +70,14 @@ } } } + return defaultEntries; + } + + @Override + public void lower(LoweringTool tool) { + StructuredGraph graph = (StructuredGraph) graph(); + + boolean defaultEntries = isDefault(); if (virtualObject instanceof VirtualInstanceNode) { VirtualInstanceNode virtual = (VirtualInstanceNode) virtualObject;