hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/LIRInstruction.java
--- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/LIRInstruction.java Fri May 12 13:14:25 2017 -0700
+++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/LIRInstruction.java Fri May 12 13:56:13 2017 -0700
@@ -47,6 +47,9 @@
import org.graalvm.compiler.debug.Debug;
import org.graalvm.compiler.debug.DebugCounter;
import org.graalvm.compiler.graph.NodeSourcePosition;
+import org.graalvm.compiler.lir.StandardOp.LoadConstantOp;
+import org.graalvm.compiler.lir.StandardOp.MoveOp;
+import org.graalvm.compiler.lir.StandardOp.ValueMoveOp;
import org.graalvm.compiler.lir.asm.CompilationResultBuilder;
import jdk.vm.ci.code.RegisterValue;
@@ -349,6 +352,38 @@
return instructionClass.forEachRegisterHint(this, mode, proc);
}
+ // Checkstyle: stop
+ /**
+ * Returns {@code true} if the instruction is a {@link MoveOp}.
+ *
+ * This function is preferred to {@code instanceof MoveOp} since the type check is more
+ * expensive than reading a field from {@link LIRInstructionClass}.
+ */
+ public final boolean isMoveOp() {
+ return instructionClass.isMoveOp();
+ }
+
+ /**
+ * Returns {@code true} if the instruction is a {@link ValueMoveOp}.
+ *
+ * This function is preferred to {@code instanceof ValueMoveOp} since the type check is more
+ * expensive than reading a field from {@link LIRInstructionClass}.
+ */
+ public final boolean isValueMoveOp() {
+ return instructionClass.isValueMoveOp();
+ }
+
+ /**
+ * Returns {@code true} if the instruction is a {@link LoadConstantOp}.
+ *
+ * This function is preferred to {@code instanceof LoadConstantOp} since the type check is more
+ * expensive than reading a field from {@link LIRInstructionClass}.
+ */
+ public final boolean isLoadConstantOp() {
+ return instructionClass.isLoadConstantOp();
+ }
+ // Checkstyle: resume
+
/**
* Utility method to add stack arguments to a list of temporaries. Useful for modeling calling
* conventions that kill outgoing argument space.