src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/ValueNode.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/ValueNode.java

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

Print this page

        

*** 20,35 **** --- 20,38 ---- * or visit www.oracle.com if you need additional information or have any * questions. */ package org.graalvm.compiler.nodes; + import java.util.function.Predicate; + import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.graph.Node; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.graph.iterators.NodePredicate; import org.graalvm.compiler.nodeinfo.InputType; import org.graalvm.compiler.nodeinfo.NodeInfo; + import org.graalvm.compiler.nodeinfo.Verbosity; import org.graalvm.compiler.nodes.spi.NodeValueMap; import jdk.vm.ci.meta.Constant; import jdk.vm.ci.meta.JavaConstant; import jdk.vm.ci.meta.JavaKind;
*** 141,150 **** --- 144,157 ---- } else { return null; } } + public final boolean isJavaConstant() { + return isConstant() && asConstant() instanceof JavaConstant; + } + public final JavaConstant asJavaConstant() { Constant value = asConstant(); if (value instanceof JavaConstant) { return (JavaConstant) value; } else {
*** 180,185 **** --- 187,208 ---- } } return false; } + @Override + protected void replaceAtUsages(Node other, Predicate<Node> filter, Node toBeDeleted) { + super.replaceAtUsages(other, filter, toBeDeleted); + assert checkReplaceAtUsagesInvariants(other); + } + + private boolean checkReplaceAtUsagesInvariants(Node other) { + assert other == null || other instanceof ValueNode; + if (this.hasUsages() && !this.stamp().isEmpty() && !(other instanceof PhiNode) && other != null) { + assert ((ValueNode) other).stamp().getClass() == stamp().getClass() : "stamp have to be of same class"; + boolean morePrecise = ((ValueNode) other).stamp().join(stamp()).equals(((ValueNode) other).stamp()); + assert morePrecise : "stamp can only get more precise " + toString(Verbosity.All) + " " + + other.toString(Verbosity.All); + } + return true; + } }
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/ValueNode.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File