# HG changeset patch # User Thomas Wuerthinger # Date 1433280046 -7200 # Node ID 5731adc3a10aa731ef1f8723fb6c1475149885c9 # Parent 942793d2a513ae8c66ca02eba99c7213112ada42 Eliminate fixed boxing node if it has no usages. diff -r 942793d2a513 -r 5731adc3a10a graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java --- 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 { public static final NodeClass 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());