# HG changeset patch # User Lukas Stadler # Date 1403688354 -7200 # Node ID de90d96f562c6d1b65ce7f3caa19c1c92e88ac06 # Parent 51c7c676d41a17bf140fbee5ee877eceb6c510d6 make InstanceOfDynamicNode a BinaryOpLogicNode diff -r 51c7c676d41a -r de90d96f562c graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java Wed Jun 25 11:21:44 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java Wed Jun 25 11:25:54 2014 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,6 @@ package com.oracle.graal.nodes.java; import com.oracle.graal.api.meta.*; -import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -34,7 +33,7 @@ * known at compile time. This is used, for instance, to intrinsify {@link Class#isInstance(Object)} * . */ -public final class InstanceOfDynamicNode extends LogicNode implements Canonicalizable, Lowerable { +public final class InstanceOfDynamicNode extends LogicNode implements Canonicalizable.Binary, Lowerable { @Input private ValueNode object; @Input private ValueNode mirror; @@ -56,16 +55,14 @@ tool.getLowerer().lower(this, tool); } - @Override - public Node canonical(CanonicalizerTool tool) { - assert object() != null : this; - if (mirror().isConstant()) { - ResolvedJavaType t = tool.getConstantReflection().asJavaType(mirror().asConstant()); + public ValueNode canonical(CanonicalizerTool tool, ValueNode forObject, ValueNode forMirror) { + if (forMirror.isConstant()) { + ResolvedJavaType t = tool.getConstantReflection().asJavaType(forMirror.asConstant()); if (t != null) { if (t.isPrimitive()) { - return LogicConstantNode.contradiction(graph()); + return LogicConstantNode.contradiction(); } else { - return graph().unique(new InstanceOfNode(t, object(), null)); + return new InstanceOfNode(t, forObject, null); } } } @@ -79,4 +76,12 @@ public ValueNode mirror() { return mirror; } + + public ValueNode getX() { + return object; + } + + public ValueNode getY() { + return mirror; + } }