Mercurial > hg > graal-compiler
changeset 21670:5731adc3a10a
Eliminate fixed boxing node if it has no usages.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Tue, 02 Jun 2015 23:20:46 +0200 |
parents | 942793d2a513 |
children | 8d0c2aabfc2d 90bccd2369d9 7355942cb270 c072fbce5756 |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java |
diffstat | 1 files changed, 10 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java Tue Jun 02 21:07:25 2015 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java Tue Jun 02 23:20:46 2015 +0200 @@ -26,6 +26,7 @@ import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.graph.*; +import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.java.*; @@ -39,7 +40,7 @@ * methods in Integer, Long, etc. */ @NodeInfo -public final class BoxNode extends FixedWithNextNode implements VirtualizableAllocation, Lowerable { +public final class BoxNode extends FixedWithNextNode implements VirtualizableAllocation, Lowerable, Canonicalizable.Unary<ValueNode> { public static final NodeClass<BoxNode> TYPE = NodeClass.create(BoxNode.class); @Input private ValueNode value; @@ -65,6 +66,14 @@ } @Override + public ValueNode canonical(CanonicalizerTool tool, ValueNode forValue) { + if (tool.allUsagesAvailable() && hasNoUsages()) { + return null; + } + return this; + } + + @Override public void virtualize(VirtualizerTool tool) { ValueNode v = tool.getReplacedValue(getValue()); ResolvedJavaType type = StampTool.typeOrNull(stamp());