comparison graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java @ 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 8aa5bd9935b3
children a4aa2116cfe0
comparison
equal deleted inserted replaced
20073:a875af927be8 20074:a7ee2e1f0d4e
27 import com.oracle.graal.graph.*; 27 import com.oracle.graal.graph.*;
28 import com.oracle.graal.graph.spi.*; 28 import com.oracle.graal.graph.spi.*;
29 import com.oracle.graal.nodeinfo.*; 29 import com.oracle.graal.nodeinfo.*;
30 import com.oracle.graal.nodes.*; 30 import com.oracle.graal.nodes.*;
31 import com.oracle.graal.nodes.spi.*; 31 import com.oracle.graal.nodes.spi.*;
32 import com.oracle.graal.nodes.type.*;
32 33
33 @NodeInfo 34 @NodeInfo
34 public final class UnboxNode extends FixedWithNextNode implements Virtualizable, Lowerable, Canonicalizable.Unary<ValueNode> { 35 public final class UnboxNode extends FixedWithNextNode implements Virtualizable, Lowerable, Canonicalizable.Unary<ValueNode> {
35 36
36 public static final NodeClass<UnboxNode> TYPE = NodeClass.create(UnboxNode.class); 37 public static final NodeClass<UnboxNode> TYPE = NodeClass.create(UnboxNode.class);
76 } 77 }
77 } 78 }
78 79
79 @Override 80 @Override
80 public ValueNode canonical(CanonicalizerTool tool, ValueNode forValue) { 81 public ValueNode canonical(CanonicalizerTool tool, ValueNode forValue) {
82 if (hasNoUsages() && StampTool.isPointerNonNull(forValue)) {
83 return null;
84 }
81 ValueNode synonym = findSynonym(tool.getMetaAccess(), tool.getConstantReflection(), forValue, boxingKind); 85 ValueNode synonym = findSynonym(tool.getMetaAccess(), tool.getConstantReflection(), forValue, boxingKind);
82 if (synonym != null) { 86 if (synonym != null) {
83 return synonym; 87 return synonym;
84 } 88 }
85 return this; 89 return this;