src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.api.runtime/src/org/graalvm/compiler/api/runtime/GraalRuntime.java
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.api.runtime/src/org/graalvm/compiler/api/runtime/GraalRuntime.java Fri Feb 02 10:37:48 2018 -0500
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.api.runtime/src/org/graalvm/compiler/api/runtime/GraalRuntime.java Fri Feb 02 17:28:17 2018 -0800
@@ -22,9 +22,19 @@
*/
package org.graalvm.compiler.api.runtime;
+import jdk.vm.ci.common.JVMCIError;
+
public interface GraalRuntime {
String getName();
<T> T getCapability(Class<T> clazz);
+
+ default <T> T getRequiredCapability(Class<T> clazz) {
+ T ret = getCapability(clazz);
+ if (ret == null) {
+ throw new JVMCIError("The VM does not expose the required Graal capability %s.", clazz.getName());
+ }
+ return ret;
+ }
}