< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/VerifyGetOptionsUsage.java
Print this page
@@ -34,10 +34,11 @@
import org.graalvm.compiler.phases.VerifyPhase;
import org.graalvm.compiler.phases.tiers.PhaseContext;
import jdk.vm.ci.meta.MetaAccessProvider;
import jdk.vm.ci.meta.ResolvedJavaMethod;
+import jdk.vm.ci.meta.ResolvedJavaMethod.Parameter;
import jdk.vm.ci.meta.ResolvedJavaType;
/**
* {@link Node#getOptions()} is unsafe for use during canonicalization so try to verify that it
* isn't used when a {@link CanonicalizerTool} is available in the arguments. This is slightly more
@@ -53,19 +54,23 @@
}
throw new InternalError();
}
@Override
- protected boolean verify(StructuredGraph graph, PhaseContext context) {
+ protected void verify(StructuredGraph graph, PhaseContext context) {
MetaAccessProvider metaAccess = context.getMetaAccess();
ResolvedJavaType canonicalizerToolClass = metaAccess.lookupJavaType(CanonicalizerTool.class);
boolean hasTool = false;
+ ResolvedJavaMethod method = graph.method();
try {
- for (ResolvedJavaMethod.Parameter parameter : graph.method().getParameters()) {
- if (parameter.getType().getName().equals(canonicalizerToolClass.getName())) {
- hasTool = true;
- break;
+ Parameter[] parameters = method.getParameters();
+ if (parameters != null) {
+ for (ResolvedJavaMethod.Parameter parameter : parameters) {
+ if (parameter.getType().getName().equals(canonicalizerToolClass.getName())) {
+ hasTool = true;
+ break;
+ }
}
}
} catch (MalformedParametersException e) {
// Lambdas sometimes have malformed parameters so ignore this.
}
@@ -74,15 +79,13 @@
for (MethodCallTargetNode t : graph.getNodes(MethodCallTargetNode.TYPE)) {
ResolvedJavaMethod callee = t.targetMethod();
if (callee.equals(getOptionsMethod)) {
if (hasTool) {
throw new VerificationError("Must use CanonicalizerTool.getOptions() instead of Node.getOptions() in method '%s' of class '%s'.",
- graph.method().getName(), graph.method().getDeclaringClass().getName());
+ method.getName(), method.getDeclaringClass().getName());
}
}
}
}
-
- return true;
}
}
< prev index next >