# HG changeset patch # User Thomas Wuerthinger # Date 1426261647 -3600 # Node ID 8aa5bd9935b3edfa39848f504f1f3fd587731bb8 # Parent 05a2fbf0e9a0f7e29114aaf77e5387f406c72cef Turn UnboxNode into a fixed node. diff -r 05a2fbf0e9a0 -r 8aa5bd9935b3 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java Fri Mar 13 16:19:02 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java Fri Mar 13 16:47:27 2015 +0100 @@ -28,17 +28,22 @@ import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; -import com.oracle.graal.nodes.calc.*; import com.oracle.graal.nodes.spi.*; @NodeInfo -public final class UnboxNode extends UnaryNode implements Virtualizable, Lowerable { +public final class UnboxNode extends FixedWithNextNode implements Virtualizable, Lowerable, Canonicalizable.Unary { public static final NodeClass TYPE = NodeClass.create(UnboxNode.class); + @Input protected ValueNode value; protected final Kind boxingKind; + public ValueNode getValue() { + return value; + } + protected UnboxNode(ValueNode value, Kind boxingKind) { - super(TYPE, StampFactory.forKind(boxingKind.getStackKind()), value); + super(TYPE, StampFactory.forKind(boxingKind.getStackKind())); + this.value = value; this.boxingKind = boxingKind; } diff -r 05a2fbf0e9a0 -r 8aa5bd9935b3 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/BoxingSnippets.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/BoxingSnippets.java Fri Mar 13 16:19:02 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/BoxingSnippets.java Fri Mar 13 16:47:27 2015 +0100 @@ -235,8 +235,7 @@ SnippetTemplate template = template(args); Debug.log("Lowering integerValueOf in %s: node=%s, template=%s, arguments=%s", unbox.graph(), unbox, template, args); - template.instantiate(providers.getMetaAccess(), unbox, DEFAULT_REPLACER, tool, args); - GraphUtil.killWithUnusedFloatingInputs(unbox); + template.instantiate(providers.getMetaAccess(), unbox, DEFAULT_REPLACER, args); } } diff -r 05a2fbf0e9a0 -r 8aa5bd9935b3 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java Fri Mar 13 16:19:02 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java Fri Mar 13 16:47:27 2015 +0100 @@ -444,7 +444,7 @@ } else if (usage instanceof UnboxNode) { UnboxNode unbox = (UnboxNode) usage; unbox.replaceAtUsages(intrinsifiedNode); - graph.removeFloating(unbox); + graph.removeFixed(unbox); Debug.log("%s: Removed an UnboxNode", Debug.contextSnapshot(JavaMethod.class)); } else if (usage instanceof UnsafeStoreNode) { UnsafeStoreNode store = (UnsafeStoreNode) usage;