< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/ConstantNode.java

Print this page




  37 import org.graalvm.compiler.graph.Node;
  38 import org.graalvm.compiler.graph.NodeClass;
  39 import org.graalvm.compiler.graph.iterators.NodeIterable;
  40 import org.graalvm.compiler.lir.ConstantValue;
  41 import org.graalvm.compiler.nodeinfo.NodeInfo;
  42 import org.graalvm.compiler.nodeinfo.Verbosity;
  43 import org.graalvm.compiler.nodes.calc.FloatingNode;
  44 import org.graalvm.compiler.nodes.spi.LIRLowerable;
  45 import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool;
  46 
  47 import jdk.vm.ci.code.CodeUtil;
  48 import jdk.vm.ci.meta.Constant;
  49 import jdk.vm.ci.meta.JavaConstant;
  50 import jdk.vm.ci.meta.JavaKind;
  51 import jdk.vm.ci.meta.MetaAccessProvider;
  52 import jdk.vm.ci.meta.PrimitiveConstant;
  53 
  54 /**
  55  * The {@code ConstantNode} represents a {@link Constant constant}.
  56  */
  57 @NodeInfo(nameTemplate = "C({p#rawvalue})", cycles = CYCLES_0, size = SIZE_1)
  58 public final class ConstantNode extends FloatingNode implements LIRLowerable {
  59 
  60     public static final NodeClass<ConstantNode> TYPE = NodeClass.create(ConstantNode.class);
  61 
  62     protected final Constant value;
  63 
  64     private final int stableDimension;
  65     private final boolean isDefaultStable;
  66 
  67     private static ConstantNode createPrimitive(JavaConstant value) {
  68         assert value.getJavaKind() != JavaKind.Object;
  69         return new ConstantNode(value, StampFactory.forConstant(value));
  70     }
  71 
  72     /**
  73      * Constructs a new node representing the specified constant.
  74      *
  75      * @param value the constant
  76      */
  77     public ConstantNode(Constant value, Stamp stamp) {


 501             case Short:
 502             case Int:
 503                 return ConstantNode.forInt(0);
 504             case Double:
 505                 return ConstantNode.forDouble(0.0);
 506             case Float:
 507                 return ConstantNode.forFloat(0.0f);
 508             case Long:
 509                 return ConstantNode.forLong(0L);
 510             case Object:
 511                 return ConstantNode.forConstant(JavaConstant.NULL_POINTER, null);
 512             default:
 513                 return null;
 514         }
 515     }
 516 
 517     @Override
 518     public Map<Object, Object> getDebugProperties(Map<Object, Object> map) {
 519         Map<Object, Object> properties = super.getDebugProperties(map);
 520         properties.put("rawvalue", value.toValueString());

 521         return properties;
 522     }
 523 
 524     @Override
 525     public String toString(Verbosity verbosity) {
 526         if (verbosity == Verbosity.Name) {
 527             return super.toString(Verbosity.Name) + "(" + value.toValueString() + ")";
 528         } else {
 529             return super.toString(verbosity);
 530         }
 531     }
 532 }


  37 import org.graalvm.compiler.graph.Node;
  38 import org.graalvm.compiler.graph.NodeClass;
  39 import org.graalvm.compiler.graph.iterators.NodeIterable;
  40 import org.graalvm.compiler.lir.ConstantValue;
  41 import org.graalvm.compiler.nodeinfo.NodeInfo;
  42 import org.graalvm.compiler.nodeinfo.Verbosity;
  43 import org.graalvm.compiler.nodes.calc.FloatingNode;
  44 import org.graalvm.compiler.nodes.spi.LIRLowerable;
  45 import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool;
  46 
  47 import jdk.vm.ci.code.CodeUtil;
  48 import jdk.vm.ci.meta.Constant;
  49 import jdk.vm.ci.meta.JavaConstant;
  50 import jdk.vm.ci.meta.JavaKind;
  51 import jdk.vm.ci.meta.MetaAccessProvider;
  52 import jdk.vm.ci.meta.PrimitiveConstant;
  53 
  54 /**
  55  * The {@code ConstantNode} represents a {@link Constant constant}.
  56  */
  57 @NodeInfo(nameTemplate = "C({p#rawvalue}) {p#stampKind}", cycles = CYCLES_0, size = SIZE_1)
  58 public final class ConstantNode extends FloatingNode implements LIRLowerable {
  59 
  60     public static final NodeClass<ConstantNode> TYPE = NodeClass.create(ConstantNode.class);
  61 
  62     protected final Constant value;
  63 
  64     private final int stableDimension;
  65     private final boolean isDefaultStable;
  66 
  67     private static ConstantNode createPrimitive(JavaConstant value) {
  68         assert value.getJavaKind() != JavaKind.Object;
  69         return new ConstantNode(value, StampFactory.forConstant(value));
  70     }
  71 
  72     /**
  73      * Constructs a new node representing the specified constant.
  74      *
  75      * @param value the constant
  76      */
  77     public ConstantNode(Constant value, Stamp stamp) {


 501             case Short:
 502             case Int:
 503                 return ConstantNode.forInt(0);
 504             case Double:
 505                 return ConstantNode.forDouble(0.0);
 506             case Float:
 507                 return ConstantNode.forFloat(0.0f);
 508             case Long:
 509                 return ConstantNode.forLong(0L);
 510             case Object:
 511                 return ConstantNode.forConstant(JavaConstant.NULL_POINTER, null);
 512             default:
 513                 return null;
 514         }
 515     }
 516 
 517     @Override
 518     public Map<Object, Object> getDebugProperties(Map<Object, Object> map) {
 519         Map<Object, Object> properties = super.getDebugProperties(map);
 520         properties.put("rawvalue", value.toValueString());
 521         properties.put("stampKind", stamp.unrestricted().toString());
 522         return properties;
 523     }
 524 
 525     @Override
 526     public String toString(Verbosity verbosity) {
 527         if (verbosity == Verbosity.Name) {
 528             return super.toString(Verbosity.Name) + "(" + value.toValueString() + ", " + stamp().unrestricted().toString() + ")";
 529         } else {
 530             return super.toString(verbosity);
 531         }
 532     }
 533 }
< prev index next >