# HG changeset patch # User Lukas Stadler # Date 1427716799 -7200 # Node ID a7ee2e1f0d4ece014306fb5189df56a1e03e9ef1 # Parent a875af927be865d7f607f2d0d3bff181cdbcdf87 remove UnboxNodes without usages (if object is non-null) diff -r a875af927be8 -r a7ee2e1f0d4e graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java Mon Mar 30 11:59:58 2015 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java Mon Mar 30 13:59:59 2015 +0200 @@ -29,6 +29,7 @@ import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; +import com.oracle.graal.nodes.type.*; @NodeInfo public final class UnboxNode extends FixedWithNextNode implements Virtualizable, Lowerable, Canonicalizable.Unary { @@ -78,6 +79,9 @@ @Override public ValueNode canonical(CanonicalizerTool tool, ValueNode forValue) { + if (hasNoUsages() && StampTool.isPointerNonNull(forValue)) { + return null; + } ValueNode synonym = findSynonym(tool.getMetaAccess(), tool.getConstantReflection(), forValue, boxingKind); if (synonym != null) { return synonym; diff -r a875af927be8 -r a7ee2e1f0d4e graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampTool.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampTool.java Mon Mar 30 11:59:58 2015 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampTool.java Mon Mar 30 13:59:59 2015 +0200 @@ -122,7 +122,7 @@ /** * Checks whether this {@link Stamp} represents a {@linkplain Stamp#isLegal() legal} pointer - * stamp whose values known to be always null. + * stamp whose values are known to never be null. * * @param stamp the stamp to check * @return true if this stamp represents a legal object stamp whose values are known to be