Mercurial > hg > truffle
changeset 20074:a7ee2e1f0d4e
remove UnboxNodes without usages (if object is non-null)
author | Lukas Stadler <lukas.stadler@oracle.com> |
---|---|
date | Mon, 30 Mar 2015 13:59:59 +0200 |
parents | a875af927be8 |
children | 405257253e59 |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampTool.java |
diffstat | 2 files changed, 5 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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<ValueNode> { @@ -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;
--- 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