# HG changeset patch # User Lukas Stadler # Date 1353674333 -3600 # Node ID 09df32b1dff99547e097643bd72b3c4c16fab432 # Parent 1d5f1237902fabd8e5c4eaa3ee45adb594a73881 make InstanceOfNode Virtualizable diff -r 1d5f1237902f -r 09df32b1dff9 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java Tue Nov 20 16:38:09 2012 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java Fri Nov 23 13:38:53 2012 +0100 @@ -28,11 +28,12 @@ import com.oracle.graal.nodes.calc.*; import com.oracle.graal.nodes.spi.*; import com.oracle.graal.nodes.type.*; +import com.oracle.graal.nodes.virtual.*; /** * The {@code InstanceOfNode} represents an instanceof test. */ -public final class InstanceOfNode extends BooleanNode implements Canonicalizable, Lowerable, LIRLowerable { +public final class InstanceOfNode extends BooleanNode implements Canonicalizable, Lowerable, LIRLowerable, Virtualizable { @Input private ValueNode object; private final ResolvedJavaType type; @@ -129,4 +130,12 @@ } return super.verify(); } + + @Override + public void virtualize(VirtualizerTool tool) { + VirtualObjectNode virtual = tool.getVirtualState(object()); + if (virtual != null) { + tool.replaceWithValue(ConstantNode.forBoolean(virtual.type().isSubtypeOf(type()), graph())); + } + } }