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());