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
*** old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/ValueNode.java Mon Mar 20 17:40:32 2017
--- new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/ValueNode.java Mon Mar 20 17:40:32 2017
*** 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