# HG changeset patch # User Thomas Wuerthinger # Date 1376670119 -7200 # Node ID 4f97013c6317d39d9e52f4204f28798b2cb12ea3 # Parent 41c5234a3f274e624214016c86d0b7015d315f19 Make TypeCastNode virtualizable. diff -r 41c5234a3f27 -r 4f97013c6317 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/TypeCastNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/TypeCastNode.java Fri Aug 16 16:49:59 2013 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/TypeCastNode.java Fri Aug 16 18:21:59 2013 +0200 @@ -28,7 +28,7 @@ import com.oracle.graal.nodes.spi.*; import com.oracle.graal.nodes.type.*; -public final class TypeCastNode extends FixedWithNextNode implements Lowerable, com.oracle.graal.graph.Node.IterableNodeType, ValueProxy { +public final class TypeCastNode extends FixedWithNextNode implements Lowerable, com.oracle.graal.graph.Node.IterableNodeType, ValueProxy, Virtualizable { @Input private ValueNode receiver; @Input private ValueNode object; @@ -71,4 +71,12 @@ public ValueNode getOriginalValue() { return object; } + + @Override + public void virtualize(VirtualizerTool tool) { + State state = tool.getObjectState(object); + if (state != null && state.getState() == EscapeState.Virtual) { + tool.replaceWithVirtual(state.getVirtualObject()); + } + } }