27 import org.graalvm.compiler.core.common.PermanentBailoutException; |
27 import org.graalvm.compiler.core.common.PermanentBailoutException; |
28 import org.graalvm.compiler.core.common.RetryableBailoutException; |
28 import org.graalvm.compiler.core.common.RetryableBailoutException; |
29 import org.graalvm.compiler.debug.GraalError; |
29 import org.graalvm.compiler.debug.GraalError; |
30 import org.graalvm.compiler.nodes.StructuredGraph; |
30 import org.graalvm.compiler.nodes.StructuredGraph; |
31 import org.graalvm.compiler.nodes.java.MethodCallTargetNode; |
31 import org.graalvm.compiler.nodes.java.MethodCallTargetNode; |
|
32 import org.graalvm.compiler.nodes.spi.CoreProviders; |
32 import org.graalvm.compiler.phases.VerifyPhase; |
33 import org.graalvm.compiler.phases.VerifyPhase; |
33 import org.graalvm.compiler.phases.tiers.PhaseContext; |
|
34 |
34 |
35 import jdk.vm.ci.code.BailoutException; |
35 import jdk.vm.ci.code.BailoutException; |
36 import jdk.vm.ci.meta.ResolvedJavaMethod; |
36 import jdk.vm.ci.meta.ResolvedJavaMethod; |
37 import jdk.vm.ci.meta.ResolvedJavaType; |
37 import jdk.vm.ci.meta.ResolvedJavaType; |
38 |
38 |
39 public class VerifyBailoutUsage extends VerifyPhase<PhaseContext> { |
39 public class VerifyBailoutUsage extends VerifyPhase<CoreProviders> { |
40 |
40 |
41 private static final String[] AllowedPackagePrefixes; |
41 private static final String[] AllowedPackagePrefixes; |
42 |
42 |
43 private static String getPackageName(Class<?> c) { |
43 private static String getPackageName(Class<?> c) { |
44 String classNameWithPackage = c.getName(); |
44 String classNameWithPackage = c.getName(); |
71 } |
71 } |
72 return false; |
72 return false; |
73 } |
73 } |
74 |
74 |
75 @Override |
75 @Override |
76 protected void verify(StructuredGraph graph, PhaseContext context) { |
76 protected void verify(StructuredGraph graph, CoreProviders context) { |
77 final ResolvedJavaType bailoutType = context.getMetaAccess().lookupJavaType(BailoutException.class); |
77 final ResolvedJavaType bailoutType = context.getMetaAccess().lookupJavaType(BailoutException.class); |
78 ResolvedJavaMethod caller = graph.method(); |
78 ResolvedJavaMethod caller = graph.method(); |
79 String holderQualified = caller.format("%H"); |
79 String holderQualified = caller.format("%H"); |
80 String holderUnqualified = caller.format("%h"); |
80 String holderUnqualified = caller.format("%h"); |
81 String packageName = holderQualified.substring(0, holderQualified.length() - holderUnqualified.length() - 1); |
81 String packageName = holderQualified.substring(0, holderQualified.length() - holderUnqualified.length() - 1); |